【发布时间】:2017-12-30 10:17:48
【问题描述】:
我的项目中有两个模型。模型 A 和 B。模型 B 与模型 A 具有“OneToOne”关系。我为模型 B 编写了一个序列化程序类。在“.create()”函数中我在保存模型 B 时遇到问题,因为我需要覆盖保存B 模型中的 () 函数用于插入 Slug 值。错误是:
save() 得到了一个意外的关键字参数“force_insert”
class A(models.Model):
address = models.Charfield(max_length=160)
class b(models.Model):
a = models.OneToOneField(AdIfo, related_name='ad_info', primary_key=True,
on_delete=models.CASCADE)
slug = models.SlugField(unique=True, db_index=True, blank=True)
def save(self):
self.slug ="%d%s" %(self.pk, slugify(self.title))
super(B, self).save()
序列化器.py
class ASerializer(serializers.ModelSerializer):
class Meta:
model = A
fields = "__all__"
class BSerilizer(serializers.ModelSerializer):
a = ASerializer(many=False, required=False, allow_null=True)
slug = serializers.SlugField(read_only=True)
class Meta:
model = B
fields = '__all__'
def create(self, validated_data):
info_data = validated_data.pop('ad_info')
A.objects.create(**info_data)
ad = B.objects.update_or_create(**validated_data)
A.objects.update_or_create(ad_info=adgame, **info_data)
ad.save()
return ad
【问题讨论】:
-
您没有正确复制/粘贴 + 修改您的代码(请参阅语法突出显示)。
标签: django django-rest-framework