DRF Serializing inherited models

Viewed 52

I have two models inheriting same model and i want to serialize them. I couldn't see a way to do it with modelserializer class.

class Answer(models.Model):

    submission = models.ForeignKey( Submission, related_name='answers', on_delete=models.CASCADE)
    question = models.ForeignKey( Question, related_name='answers', on_delete=models.CASCADE )

class TextAnswer(Answer):

    answer = models.CharField(max_length=10000 , blank=True)

class IntegerAnswer(Answer):
    answer = models.IntegerField(blank=True)

What i want to do is this so i can serialize all the related answers no matter what type they are.

class QuestionSerializer(serializers.ModelSerializer):
    answers = AnswerSerializer(many=True)
    class Meta:
        model = Question
        fields = '__all__'
1 Answers

One approach I can think of is to use SerializerMethodFields:

class QuestionSerializer(serializers.ModelSerializer):
    answers = serializers.SerializerMethodField()
    class Meta:
        model = Question
        fields = '__all__'

    def get_answers(self, obj)
        return obj.answers.all().values_list('answer', flat=True)
 
Related