我想创建一个包含多项选择的投票,但我遇到了嵌套序列化程序问题 我的模特:
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
字段似乎无法显示数据
尝试从
depth
的
Meta
类中删除
PollMultipleChoiceOptionCustomSerializer
参数
class PollMultipleChoiceOptionCustomSerializer(serializers.ModelSerializer):
class Meta:
model = PollMultipleChoiceOption
fields = ["id", "option", "poll_multiple_choice"]