Django REST框架API:PrimaryKeyRelatedField

时间:2014-06-13 18:36:30

标签: python django serialization django-rest-framework

我是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'

我确信这个错误是由'author'字段引起的(如果你注释掉错误就会消失)

这是否表明我不能在一般的Serializer中使用外键类型字段?

顺便说一句,如果你很好奇为什么我将我的序列化程序从ModelSerializer更改为Serializer是因为我想要包含一些额外的字段(在任何模型中都不存在)以创建一个新的Example实例。默认情况下.restore_object()方法简单调用Example(** attrs)创建新实例,这会导致字段错误。

1 个答案:

答案 0 :(得分:0)

您需要一个模型,因为您想要序列化数据库关系。

Here is the doc