使用 Django Rest Framework 根据单个字段值序列化查询集

彼得·陶 |

目标

如果一个对象有revealed=true它序列化为:

{
   "id":1,
   "info":"top secret info",
   "revealed":true
}

如果一个对象revealed=falseinfo字段是null

{
   "id":2,
   "info":null,
   "revealed":false
}

所以对于对象的查询集:

[  
   {  
      "id":1,
      "info":"top secret info 1",
      "revealed":true
   },
   {
       "id":2,
       "info":null,
       "revealed":false
   },
   {  
      "id":3,
      "info":"top secret info 3",
      "revealed":true
   }
]

是否可以在 Django Rest Framework Model Serializer 类中实现这一点?

class InfoSerializer(serializers.ModelSerializer):
    class Meta:
        model = Info
        fields = ('id', 'info', 'revealed')

背景

DRF文档讨论一些先进的串行器使用,并且这等后潜入一个例子。然而,它似乎没有涵盖这个特定问题。

想法

一个hacky解决方案是之后迭代序列化数据,并删除info每个具有revealed=false. 但是 1) 它涉及一个额外的循环,并且 2) 需要在数据序列化的任何地方实现。

唐柯克比

我建议您让该info字段出现在所有记录中,但在revealed为 false时将其保留为 null 如果这是可以接受的,您应该能够使用SerializerMethodField.

或者,您可以revealed_info向模型类添加一个属性,并通过序列化程序公开它。

@property
def revealed_info(self):
    return self.info if self.revealed else None

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django Rest Framework使用动态字段序列化

来自分类Dev

如何使用Django Rest Framework修补单个字段?

来自分类Dev

如何在SerializerMethodField()中使用多个查询集优化Django-rest-framework序列化程序

来自分类Dev

如何使用Django Rest Framework将url字段添加到序列化器

来自分类Dev

使用Django Rest Framework序列化程序发布到嵌套字段

来自分类Dev

使用django-rest-framework序列化器检索具有许多模型值

来自分类Dev

Django Rest Framework,使用多个模型查询

来自分类Dev

Django Rest Framework-如何在序列化器中嵌套多个字段?

来自分类Dev

Django Rest Framework将查询集序列化为带有自定义字段的字典

来自分类Dev

Django REST Framework序列化器字段必填= false

来自分类Dev

Django Rest Framework中的序列化器字段筛选?

来自分类Dev

Django REST Framework序列化器字段必填= false

来自分类Dev

序列化器上的Django Rest Framework条件字段

来自分类Dev

Django Rest Framework-筛选序列化器字段

来自分类Dev

从Django Rest Framework序列化器中排除字段

来自分类Dev

Django Rest Framework-TaggableManager字段的反序列化

来自分类Dev

Django Rest Framework-如何序列化嵌套字段

来自分类Dev

Django Rest Framework序列化器-返回相关字段

来自分类Dev

Django REST Framework-序列化可选字段

来自分类Dev

django-rest-framework用于序列化的不同字段

来自分类Dev

不同的字段类型序列化器 - Django Rest Framework

来自分类Dev

Django REST Framework ManyRelatedField的序列化

来自分类Dev

翻译序列化 Django Rest Framework

来自分类Dev

使用Django REST Framework序列化外键数组

来自分类Dev

Django-rest-framework序列化多个没有相关字段的查询

来自分类Dev

如何使用Django Rest Framework在单个请求中反序列化多个文件并形成数据?

来自分类Dev

如何使用Django Rest Framework使用序列化程序来验证动态JSON?

来自分类Dev

使用Django Rest Framework创建嵌套的序列化器,但不使用主键作为标识

来自分类Dev

使用Django的ORM和Django Rest框架序列化嵌套关系的查询集的正确方法?

Related 相关文章

  1. 1

    Django Rest Framework使用动态字段序列化

  2. 2

    如何使用Django Rest Framework修补单个字段?

  3. 3

    如何在SerializerMethodField()中使用多个查询集优化Django-rest-framework序列化程序

  4. 4

    如何使用Django Rest Framework将url字段添加到序列化器

  5. 5

    使用Django Rest Framework序列化程序发布到嵌套字段

  6. 6

    使用django-rest-framework序列化器检索具有许多模型值

  7. 7

    Django Rest Framework,使用多个模型查询

  8. 8

    Django Rest Framework-如何在序列化器中嵌套多个字段?

  9. 9

    Django Rest Framework将查询集序列化为带有自定义字段的字典

  10. 10

    Django REST Framework序列化器字段必填= false

  11. 11

    Django Rest Framework中的序列化器字段筛选?

  12. 12

    Django REST Framework序列化器字段必填= false

  13. 13

    序列化器上的Django Rest Framework条件字段

  14. 14

    Django Rest Framework-筛选序列化器字段

  15. 15

    从Django Rest Framework序列化器中排除字段

  16. 16

    Django Rest Framework-TaggableManager字段的反序列化

  17. 17

    Django Rest Framework-如何序列化嵌套字段

  18. 18

    Django Rest Framework序列化器-返回相关字段

  19. 19

    Django REST Framework-序列化可选字段

  20. 20

    django-rest-framework用于序列化的不同字段

  21. 21

    不同的字段类型序列化器 - Django Rest Framework

  22. 22

    Django REST Framework ManyRelatedField的序列化

  23. 23

    翻译序列化 Django Rest Framework

  24. 24

    使用Django REST Framework序列化外键数组

  25. 25

    Django-rest-framework序列化多个没有相关字段的查询

  26. 26

    如何使用Django Rest Framework在单个请求中反序列化多个文件并形成数据?

  27. 27

    如何使用Django Rest Framework使用序列化程序来验证动态JSON?

  28. 28

    使用Django Rest Framework创建嵌套的序列化器,但不使用主键作为标识

  29. 29

    使用Django的ORM和Django Rest框架序列化嵌套关系的查询集的正确方法?

热门标签

归档