Gly*_*son 3 python django django-rest-framework
Django Rest Framework 有一个PrimaryKeyRelatedField,它列出了我与类别的关系的 ID many-to-many...
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)
Run Code Online (Sandbox Code Playgroud)
我想覆盖create()类别字段上获取大量发布的 ID(传统上 DRF 希望我发送 URL)。
JSON 帖子:
{
"name": "test",
"categories": [1,2]
}
Run Code Online (Sandbox Code Playgroud)
序列化器创建:
def create(self, validated_data):
categories = validated_data.pop('categories', None)
print(categories) # This shows and empty/None even when ID are posted!
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是categories上面是空的,我假设因为PrimaryKeyRelatedField设置为read_only=True,但根据 DRF,这必须为真。
我的问题是...如何使用PrimaryKeyRelatedFieldwithvalidated_data.pop来获取我提交的 ID 列表?
我可以使用self.context.get("request").data['categories'],但这很糟糕,需要我把它变成一个列表+其他东西。
对于遇到此问题的其他人,我找到了一个允许PrimaryKeyRelatedField读/写的解决方案。只需添加queryset
categories = serializers.PrimaryKeyRelatedField(many=True, queryset=Category.objects.all())
Run Code Online (Sandbox Code Playgroud)
它仍然会过滤正确的关系,这有点令人困惑。
| 归档时间: |
|
| 查看次数: |
2729 次 |
| 最近记录: |