Django rest框架反向关系序列化器排除字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django rest框架反向关系序列化器排除字段相关的知识,希望对你有一定的参考价值。
我有两个型号Question
和Options
class Question(models.Model):
question_identifier = models.CharField(max_length=255)
question_text = models.TextField(blank=False)
question_category = models.ManyToManyField('Category')
question_tags = models.CharField(max_length=255, blank=True)
class Options(models.Model):
question = models.OneToOneField('Question', related_name='options', blank=False, null=False)
option1 = models.CharField(max_length=255,blank=False,null=True)
option2 = models.CharField(max_length=255,blank=False,null=True)
option3 = models.CharField(max_length=255,blank=True,null=True)
option4 = models.CharField(max_length=255,blank=True,null=True)
我已经为Question模型编写了一个序列化器,它也可以序列化选项(反向关系)。我想省略选项中的问题字段?有没有办法实现这个目标?
我的问题序列化器: -
class QuestionSerializer(serializers.ModelSerializer):
"""
Serializer for Question object from qna.models
"""
question_category = CategorySerializer(many=True,write_only=True)
class Meta:
model = Question
fields = ('id', 'options', 'question_identifier','question_text','question_tags','question_category')
depth = 1
答案
您可以通过为Options
模型创建单独的序列化程序来实现这一目的。并使用它而不是默认字段,而不使用depth
值。
class OptionsSerializer(serializers.ModelSerializer):
class Meta:
model = Options
fields = ('option1', 'option2', 'option3')
class QuestionSerializer(serializers.ModelSerializer):
question_category = CategorySerializer(many=True,write_only=True)
options = OptionsSerializer()
class Meta:
model = Question
fields = ('id', 'options', 'question_identifier','question_text','question_tags','question_category')
以上是关于Django rest框架反向关系序列化器排除字段的主要内容,如果未能解决你的问题,请参考以下文章
django rest 框架:从序列化器 validate() 方法设置字段级错误
如何获取主键相关字段嵌套序列化器django rest框架的所有值
Django rest框架 - 模型序列化程序不会序列化所有字段