我们假设我有一个这样的模型:
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
。我必须在这里使用什么语法?
答案 0 :(得分:1)
在您的代码中Data.objects.c = 5
什么都不做。
如果您想自己设置此值,请使用validated_data['c'] = 5
或Data.objects.create(c=5, **validated_data)
(不要同时使用这两个值)。