重写PrimaryKeyRelatedField以根据请求序列化一个空的RelatedField对象

时间:2019-03-09 03:18:22

标签: python django django-rest-framework

任何人都可以建议我如何序列化以下类型的与null相关的字段,以提供序列化的JSON对象列表,该列表在获取请求时不为空

class SomeModel(models.Model):
    a_fk = models.ForeignKey(ForeignObj1, null=True, on_delete=models.CASCADE)
    b_fk = models.ForeignKey(ForeignObj2, null=True, on_delete=models.CASCADE)


class SomeSerializer(serializers.ModelSerializer):
    class Meta:
        model = SomeModel
        fields = ['a_fk', 'b_fk']

我在可浏览的API JSON中获得/看到的是

{
   "a_fk": null,
   "b_fk": null
}

但是字段Queryset是在可浏览的API表单上获取的,用于POST请求,就像普通的Django表单一样

我想看到的是在get请求中返回的那些字段上的可用queryset对象的实际列表,即使它为null,如果我重写PrimaryKeyRelatedField init (),打印字段仍然返回空的查询集,这意味着它仍将字段视为null。

我已经看完了源代码,但仍然想不出如何使它在get请求中动态发生

P.S由于某些业务用例,该字段必须保持为空。任何朝着正确方向前进的人都会受到赞赏

我现在的视图看起来像这样

class SomeViewSet(viewsets.ModelViewSet):
    queryset = Some.objects.all()
    serializer_class = SomeSerializer

我还在另一个ModelViewSet中嵌入了另一个@action getter视图,它也尝试获取请求,但仍返回相同的空对象。

搜索了几个小时之后,我认为,适当的问题应该是,如何从空的PrimaryKeyRelatedField创建一个选择可迭代列表,再次朝正确的方向轻推...

0 个答案:

没有答案