不能在序列化程序中嵌套关系

问题描述 投票:0回答:1

我想创建一个包含多项选择的投票,但我遇到了嵌套序列化程序问题 我的模特:

class PollVote(models.Model):
    member = models.ForeignKey(Member, on_delete=models.CASCADE)
    response = models.BooleanField(default=False)
    class Meta:
        abstract = True

class PollMultipleChoice(models.Model):
    question = models.TextField(blank=False)
    description = models.TextField(blank=False)
    poll = models.ForeignKey(Poll, on_delete=models.CASCADE, related_name="multiple_choice")

class PollMultipleChoiceOption(models.Model):
    option = models.CharField(max_length=100)
    poll_multiple_choice = models.ForeignKey(PollMultipleChoice, on_delete=models.CASCADE, related_name="multiple_choice_options")
    class Meta:
       unique_together = ["option", "poll_multiple_choice"]

class PollMultipleChoiceVote(PollVote):
    poll_multiple_choice_option = models.ForeignKey(PollMultipleChoiceOption, on_delete=models.CASCADE, related_name="multiple_choice_votes")
    class Meta:
        unique_together = ["member", "response", "poll_multiple_choice_option"]

序列化程序:

class PollMultipleChoiceOptionCustomSerializer(serializers.ModelSerializer):
    class Meta:
        model = PollMultipleChoiceOption
        fields = ["id", "option", "poll_multiple_choice"]
        depth = 0


class PollMultipleChoiceCustomSerializer(serializers.ModelSerializer):
    options = PollMultipleChoiceOptionCustomSerializer(many=True, allow_null=True, required=False)
    class Meta:
        model = PollMultipleChoice
        fields = ["id", "question", "description", "options"]

class PollListSerializer(serializers.ModelSerializer):
    multiple_choice = PollMultipleChoiceCustomSerializer(many=True, allow_null=True, required=False)
class Meta:
        model = Poll
        fields = [
            "id",
            "multiple_choice",
        ]

我在管理仪表板上创建了一些数据,但是当我获取 API 时,

options
字段似乎无法显示数据

serialization django-rest-framework django-serializer
1个回答
0
投票

尝试从

depth
Meta
类中删除
PollMultipleChoiceOptionCustomSerializer

参数
class PollMultipleChoiceOptionCustomSerializer(serializers.ModelSerializer):
    class Meta:
        model = PollMultipleChoiceOption
        fields = ["id", "option", "poll_multiple_choice"]
© www.soinside.com 2019 - 2024. All rights reserved.