我正在进行HTTP PUT调用以使用嵌套关系更新对象的数据,并且遇到以下错误:
HTTP 400错误请求
"带有这个slug的AttributeChoice已经存在."
这是令人困惑的原因是因为我正在HTTP PUT打电话,我希望它把它视为一个UPDATE而不是一个CREATE.
我的模型看起来像这样:
class Attribute(models.Model):
name = models.CharField(max_length=100)
text_input = models.BooleanField(default=False)
slug = models.SlugField(unique=True)
class AttributeChoice(models.Model):
attribute = models.ForeignKey(Attribute)
value = models.CharField(max_length=100)
slug = models.SlugField(unique=True)
Run Code Online (Sandbox Code Playgroud)
我的Serializers看起来像这样:
class AttributeChoiceSerializer(serializers.ModelSerializer):
class Meta:
model = AttributeChoice
fields = '__all__'
extra_kwargs = {'id': {'read_only': False}}
class AttributeSerializer(serializers.ModelSerializer):
attributechoice_set = AttributeChoiceSerializer(many=True)
class Meta:
model = Attribute
fields = ('id', 'name', 'text_input', 'slug', 'attributechoice_set')
def update(self, instance, validated_data):
choice_data = validated_data.pop('attributechoice_set')
for choice …Run Code Online (Sandbox Code Playgroud)