簡體   English   中英

如何使用PrimaryKeyRelatedField更新多對多關系上的類別

[英]How to use PrimaryKeyRelatedField to update categories on a many-to-many relationship

Django Rest Framework有一個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 POST:

{
"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可讀/寫。 只需添加queryset

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

它仍然會過濾正確的關系,這有點令人困惑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM