如何在Django rest_framework序列化器中自动填写模型字段?

时间:2017-05-11 22:49:28

标签: python django django-models django-rest-framework

我们假设我有一个这样的模型:

class Data(models.Model):
    a = models.CharField()
    b = models.CharField()
    c = models.IntegerField()

我想设置一个序列化程序,使其自动填充字段c,而POST则不需要。我试图覆盖序列化程序的create函数,但它不起作用:

class DataSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Data
        fields = ('a', 'b')

    def create(self, validated_data, **kwargs):
        Data.objects.c = 5
        return Data.objects.create(**validated_data)

但是,如果我试试这个,我最终得到一个IntegrityError: NOT NULL constraint failed: model_data.c。我必须在这里使用什么语法?

1 个答案:

答案 0 :(得分:1)

在您的代码中Data.objects.c = 5什么都不做。

如果您想自己设置此值,请使用validated_data['c'] = 5Data.objects.create(c=5, **validated_data)(不要同时使用这两个值)。