2017-03-03 86 views
1

我有兩個型號問題和選項Django的REST框架反向關係串行排除領域

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) 

我已經寫了問題模型串行其序列化選項,以及(反向關係)。我想從選項中省略問題字段?有沒有辦法做到這一點?

我的問題串行: -

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 

回答

2

您可以實現通過創建一個Options model.And一個獨立的串行用它來代替默認的字段,沒有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')