私のプロジェクトには2つのモデルがあります。モデルAとモデルBは、モデルAとの「OneToOne」関係を持っています。モデルBのシリアライザクラスを ".create()"関数で書きました。モデルBの保存に問題があります。 ()は、Slug値を挿入するためのBモデルの関数です。エラーは次のとおりです。django restframework _ OneToOneフィールド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()
serializers.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
コードのコピー/貼り付け+修正が正しく行われませんでした(構文の強調表示を参照)。 –