在django rest框架中一次性创建新资源及其关系
我试图在一篇文章中创建一个对象及其与多个对象的关系,但我一直得到400个在django rest框架中一次性创建新资源及其关系,django,django-rest-framework,Django,Django Rest Framework,我试图在一篇文章中创建一个对象及其与多个对象的关系,但我一直得到400个“属性”:“此字段是必需的”,如何在一篇文章中创建此关系的两侧 我现在得到的是: class Attribute(models.Model): name = models.CharField(max_length=100) class Value(models.Model): name = models.CharField(max_length=100) attribute = models.Fo
“属性”:“此字段是必需的”
,如何在一篇文章中创建此关系的两侧
我现在得到的是:
class Attribute(models.Model):
name = models.CharField(max_length=100)
class Value(models.Model):
name = models.CharField(max_length=100)
attribute = models.ForiegnKey(Attribute, related_name="allowed_values")
相当标准的一对多关系和相关名称。我的序列化程序看起来像
class ValueSerializer(serializers.ModelSerializer):
class Meta:
model = Value
class AttributeSerializer(serializers.ModelSerializer):
class Meta:
model = Attribute
allowed_values = ValueSerializer(many=True)
我的数据是:
{'name': 'new attribute',
'allowed_values': [{'name': 'value1'}, {'name':'value2'}, {'name':'value3'}]}
在阅读源代码时,我看到一些东西似乎应该在保存attributes对象之前从相关的值字段中弹出,但我似乎无法让序列化程序这样调用。DRF默认情况下应为
属性字段,因为您没有显式定义字段名
定义所有字段,如下所示:
class ValueSerializer(serializers.ModelSerializer):
class Meta:
model = Value
fields = ('name',)
class AttributeSerializer(serializers.ModelSerializer):
allowed_values = ValueSerializer(many=True)
class Meta:
model = Attribute
fields = ('name', 'allowed_values',)
明确定义字段名是一种良好的做法。它可以防止以后添加任何其他模型字段时出现任何潜在问题