【发布时间】:2018-03-29 06:24:53
【问题描述】:
我有 2 个模型,Parent an 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': ['Incorrect type. Expected URL string, received dict.']}
首先,我尝试将父对象作为字典和创建对象传递。 有一个细微差别,在子序列化程序中,父级仅作为超链接传输(在浏览器中的 api 中显示) 顺便问一下如何将parent的序列化器转给子序列化器,如果我已经在parent中导入了child,循环导入是因为?
第二个问题,关于错误,我知道我将数据错误地传输到字典或之后错误地处理它? 请帮忙。万能的谢谢!
【问题讨论】:
-
请确保您粘贴了相关的代码示例。这个不告诉使用
sample_ig_user_data是什么。
标签: python unit-testing testing django-rest-framework