我有一个如下所示的Serializer:
{
"id": 97,
"categories": [
23,
18
],
},
我的模型中的类别是many-to-many
。我不希望嵌套视图只是ID,因此我使用了PrimaryKeyRelatedField
。所以这只有在我有read_only=True
我不想要的情况下才有效。
Relational field must provide a `queryset` argument, or set read_only=`True`.
我想运行每个id并将它们添加到模型中....
class ItemsSerializer(serializers.HyperlinkedModelSerializer):
categories = serializers.PrimaryKeyRelatedField(many=True)
def create(self, validated_data):
categories = validated_data.pop('categories')
instance = Items.objects.create(**validated_data)
for ID in categories:
add to model
cat_instance = category.objects.get(id=ID)
then add to cat_instance etc
这是如何实现的,因为PrimaryKeyRelatedField
希望我只使用就绪。
答案 0 :(得分:1)
您可以尝试继承ModelSerializer
而不是HyperlinkedModelSerializer
,然后为PrimaryKeyRelatedField
提供queryset参数:
categories = serializers.PrimaryKeyRelatedField(many=True,
queryset=Categories.objects.all())