当我发送数据时抛出 PUT 请求此 id
无法得到这个id
在经过验证的数据中。
例如 PUT 请求正文:
{
"slug": "string",
"company_id": 1,
"api_secret": "string",
"merchant_url_list": [
{
"id": 1
"merchant_url_type_id": 1,
"url": "string"
}
]
}
但是在 valid_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,
"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}}
关于python - 为什么我不能通过 id 更新嵌套序列化器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59158611/