【问题标题】:Specific queryset in SlugRelatedField for DRF serializerSlugRelatedField 中用于 DRF 序列化程序的特定查询集
【发布时间】:2018-05-30 11:37:24
【问题描述】:

我想序列化多个对象。对“描述符”有一个 SlugRelatedField,它们在一个项目中具有唯一的名称,但相同的名称可以出现在不同的项目中。

在我的序列化程序中使用这一行:

row = serializers.SlugRelatedField(slug_field="name",
queryset=Descriptor.objects.all() )

导致错误,因为返回了多个描述符。我需要这样的东西: row = serializers.SlugRelatedField(slug_field="name", queryset=Descriptor.objects.filter(project=projectid))

验证后会导致NameError: name 'projectid' is not defined。 我可以在调用is_valid 方法时传递projectid 变量以便指定查询集吗?

【问题讨论】:

    标签: django serialization django-rest-framework


    【解决方案1】:

    经过进一步搜索,我找到了一个似乎可以工作的解决方案here

    我所做的是将它添加到序列化程序中:

    def get_fields(self, *args, **kwargs):
       fields = super(CellCESaveSerializer, self).get_fields(*args, **kwargs)
       fields['row'].queryset = Descriptor.objects.filter(project=self.context['id'])
       return fields
    

    并通过上下文交出项目的id

    serializer = CellCESaveSerializer(Cells,  data=data,many=True, context = {'id':id, 'descriptoridlist' : descriptoridlist}, partial=True)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 2019-07-12
      • 2014-09-27
      • 2018-11-19
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      相关资源
      最近更新 更多