【发布时间】:2018-08-13 12:21:30
【问题描述】:
我正在尝试在 Django Rest Framework 中创建一个可写的嵌套序列化程序。但我收到验证错误:slug 是必需的。但它是外键,在插入父对象之前是未知的。
这是我的模型和序列化程序:
型号:
class Letter(BaseModel):
char = models.CharField(
max_length=1,
)
slug = models.ForeignKey(
to="core.LetterSlug",
related_name="letters",
on_delete=models.CASCADE,
)
class LetterSlug(BaseModel):
char = models.CharField(
max_length=1,
)
序列化器:
class LetterSerializer(serializers.ModelSerializer):
class Meta:
model = Letter
fields = '__all__'
class LetterSlugSerializer(serializers.ModelSerializer):
letters = LetterSerializer(many=True,instance=Letter.objects.all())
class Meta:
model = LetterSlug
fields = ('char', 'letters')
def create(self, validated_data):
letter_data = validated_data.pop('letters')
slug = LetterSlug.objects.create(**validated_data)
Letter.objects.create(slug=slug, **letter_data)
return slug
我希望它添加几个 Letter 对象,所有这些对象都与新创建的 LetterSlug 对象共享相同的外键。
我尝试注释掉我的 create 方法的内容,并在调用 create 方法之前确保它在验证期间。
【问题讨论】:
标签: django django-rest-framework