[当我发送数据抛出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
。我如何获得身份证?
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,
"api_secret": "string",
"merchant_url_list": [
{
"merchant_url_type_id": 0,
"url": "string"
}
]
}
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}}