【发布时间】:2014-08-04 09:36:00
【问题描述】:
我对 Django Rest Framework API 很陌生。
我的问题是我可以在 serializers.Serializer 子类中声明 PrimaryKeyRelatedField 吗?还是必须在 serializers.ModelSerializer 子类中?
例如,我曾经有如下的序列化器:
class ExampleSerializer(serializers.ModelSerializer):
author = serializers.PrimaryKeyRelatedField(required=False)
## and more general fields
class Meta:
model = Example
效果很好。
然后我改成:
class ExampleSerializer(serializers.Serializer):
author = serializers.PrimaryKeyRelatedField(required=False)
## and more general fields
哪里出错了:
AttributeError: 'SerializerOptions' object has no attribute 'model'
我确定这个错误是由“作者”字段引起的(如果你把它注释掉,错误就会消失)
那么这是否表明我不能在一般的Serializer中使用外键类型字段?
顺便说一句,如果你好奇我为什么将我的序列化器从 ModelSerializer 更改为 Serializer 是因为我想包含一些额外的字段(在任何模型中都不存在)以创建一个新的 Example 实例。默认情况下 .restore_object() 方法简单调用 Example(**attrs) 创建新实例,这会导致字段错误。
【问题讨论】:
标签: python django serialization django-rest-framework