gpt4 book ai didi

python - 如何使用 PrimaryKeyRelatedField 更新多对多关系上的类别

转载 作者:太空宇宙 更新时间:2023-11-03 17:39:13 24 4
gpt4 key购买 nike

Django Rest 框架有一个 PrimaryKeyRelatedField其中列出了我的 many-to-many 上的 ID与类别的关系...

class CatalogueItemsSerializer(serializers.HyperlinkedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='catalogue_item_detail')
name = serializers.CharField(min_length=2, max_length=60)
categories = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

我想覆盖 create()在类别字段上获取大量发布的 ID(传统上 DRF 希望我发送 URL)。

JSON 帖子:

{
"name": "test",
"categories": [1,2]
}

序列化器创建:

def create(self, validated_data):
categories = validated_data.pop('categories', None)
print(categories) # This shows and empty/None even when ID are posted!

我遇到的问题是categories上面将为空,我认为因为 PrimaryKeyRelatedField设置为read_only=True但根据 DRF,这必须是正确的。

我的问题是...如何使用PrimaryKeyRelatedFieldvalidated_data.pop获取我提交的 ID 列表?

我可以使用self.context.get("request").data['categories']但这很讨厌,需要我把它变成一个列表+其他东西。

最佳答案

对于遇到此问题的其他人,我找到了一个允许 PrimaryKeyRelatedField 可读/可写的解决方案。只需添加查询集

categories = serializers.PrimaryKeyRelatedField(many=True, queryset=Category.objects.all())

它仍然会过滤正确的关系,这有点令人困惑。

关于python - 如何使用 PrimaryKeyRelatedField 更新多对多关系上的类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30801739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com