[英]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。
我的問題是...如何將PrimaryKeyRelatedField
與validated_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.