为什么我不能通过ID更新嵌套的序列化程序?

当我发送数据抛出PUT请求时,此id无法在经过验证的数据中获得此id。 例如PUT请求的正文:

{
  "slug": "string","company_id": 1,"api_secret": "string","merchant_url_list": [
    { 
      "id": 1
      "merchant_url_type_id": 1,"url": "string"
    }
  ]
}

但是在validated_data {'slug': 'string','company': <Company: Company object (1)>,'api_secret': 'string','merchanturl_set': [OrderedDict([('merchant_url_type',<MerchantUrlType: Бот (None)>),('url','string')])]}中 没有id。我如何获取ID?

class MerchantUrlSerializer(IdmodelSerializer):
    merchant = serializers.PrimaryKeyRelatedField(required=False,read_only=True)

    class Meta:
        model = MerchantUrl
        fields = ('id','merchant_url_type','merchant','url')


class MerchantSerializer(nestedSerializerMixin,IdmodelSerializer):
    merchant_url_list = MerchantUrlSerializer(source='merchanturl_set',many=True)

    class Meta:
        model = Merchant
        fields = ('id','slug','company','api_secret','merchant_url_list')
{
  "slug": "string","company_id": 0,"merchant_url_list": [
    {
      "merchant_url_type_id": 0,"url": "string"
    }
  ]
}
xiaoyr062285 回答:为什么我不能通过ID更新嵌套的序列化程序?

pk字段-在您的情况下为id-默认为read_only,因为它代表PK。

如果您想更改该行为,则需要将其设置为读/写:

class MerchantUrlSerializer(IdModelSerializer):
    merchant = serializers.PrimaryKeyRelatedField(required=False,read_only=True)

    class Meta:
        model = MerchantUrl
        fields = ('id','merchant_url_type','merchant','url')
        extra_kwargs = {'id': {'read_only': False}}
本文链接:https://www.f2er.com/2985276.html

大家都在问