为了账号安全,请及时绑定邮箱和手机立即绑定

如何过滤 django 序列化器字段?

如何过滤 django 序列化器字段?

潇潇雨雨 2023-07-05 15:33:59
我对 Django REST FRAMEWORK 有疑问。class UserTest(models.Model):    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='usert', null=True, blank=True)    question = models.ForeignKey(Question, related_name='userque', on_delete=models.CASCADE, null=True, blank=True)    option = models.ForeignKey(Option, related_name='opt', on_delete=models.CASCADE, null=True, blank=True)    def __str__(self):        return self.user.username + ' - ' + self.question.question 这是我的 UserTest 模型。当用户进行测试时。用户将在下拉列表中看到所有问题以及所有选项。但我只想要用户选择哪个问题的选项。但现在我得到了所有的选择。class TestSerializer(serializers.ModelSerializer):    question = serializers.SlugRelatedField(queryset=Question.objects.all(), slug_field='question')    option = serializers.SlugRelatedField(queryset=Option.objects.all(), slug_field='option')    class Meta:        model = UserTest        fields = ('question', 'option')这是我的测试序列化器。class Question(models.Model):    lesson = models.ForeignKey(Lesson, related_name="lquestion", on_delete=models.CASCADE, null=True, blank=True)    question = models.TextField()    def __str__(self):        return self.question这是我的问题模型class Option(models.Model):    question = models.ForeignKey(Question, related_name='choices', on_delete=models.CASCADE)    option = models.CharField(max_length=100)    is_correct = models.BooleanField(default=False)    def __str__(self):        return self.option + ' - ' + self.question.question这是我的选择模型。我希望你能明白我想问的问题。当用户选择问题时。我只想在下拉列表中显示该问题的选项。提前致谢!
查看完整描述

1 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

模型结构不正确。有。Testquestions有. Questions_options

option在模型中移除,然后从模型中UserTest移除。questionOption

我不知道lesson是什么,在这里更有意义UserTest,但我要离开它,因为我实际上不知道你的结构。

class Question(models.Model):
    lesson = models.ForeignKey(Lesson, related_name="lquestion", on_delete=models.CASCADE, null=True, blank=True)
    question = models.TextField()
    options = models.ManyToManyField(Option)  
      
    def __str__(self): 
           return self.question

您的Option模型不应该有任何其他关系。

查看完整回答
反对 回复 2023-07-05
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信