gpt4 book ai didi

python - 序列化器测试 serializer.is_valid() = False

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:06 24 4
gpt4 key购买 nike

我有 2 个模型,Parent 和 Child(fk Parent) 和 2 个序列化器:

class ParentSerializer(serializers.HyperlinkedModelSerializer):
children = serializers.SerializerMethodField()

class Meta:
model = Parent
fields = (
'username',
...
'url',
'children',
)

def get_children(self, obj):
queryset = Child.objects.filter(parent=obj)
children = ChildSerializer(queryset, many=True, context=self.context).data
return children


class ChildSerializer(serializers.HyperlinkedModelSerializer):

class Meta:
model = Child
fields = [
'parent',
...
'url',
]

我的测试用例:

class TestSerializers(TestCase):
def test_child_serializer(self):
parent_data = {
'username': 'JohnSnow',
...
}
parent = Parent.objects.create_user(**user_data)
parent.set_password('jon12345')
child_data = {
'parent': {
'username': "JohnSnow",
...
},
# 'parent': user,
...
}

serializer = ChildSerializer(data=sample_ig_user_data)
if not serializer.is_valid():
print(serializer.errors)

我的错误:{'parent': ['不正确的类型。预期的 URL 字符串,收到的字典。']}

首先,我尝试将父级作为字典和创建的对象传递。有一个细微差别,在子序列化器中,父序列化器只是作为超链接传输(在浏览器中的 api 中显示)顺便问一下怎么把parent的serializer传给child serializer,如果我已经在parent中导入了child,循环导入是因为什么?

第二个问题,关于错误,我理解是我错误地将数据传输到字典或之后处理不正确?请帮忙。通用谢谢!

最佳答案

类型不正确。预期的 URL 字符串,收到的字典。 -> 需要传递父级的主键:

child_data = {
...
'parent': parent.pk,
...
}

关于python - 序列化器测试 serializer.is_valid() = False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49549327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com