如何在Django的get_context_data方法中访问模型的外部集元素?

2024-09-24 00:26:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我在django1.9.7中有一个通用的DetailView,它使用我的模型Quiz来显示一个超级省时的无障碍视图(谢谢Django)。但是,我很难访问我的Quiz对象(一组QuizQuestion对象)上的相关外键集。我的模型如下:

class QuizQuestion(models.Model):
    quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE)
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    question_index = models.IntegerField()
    user_answer_text = models.CharField(max_length=1000)
    date_answered = models.DateTimeField(null=True)
    user_is_correct = models.NullBooleanField()

    def __str__(self):
        return self.user_answer_text

以下是我的观点:

^{pr2}$

这使我“reversemantoyonedescriptor”对象没有属性“objects”。在

我不确定尝试使用_set来获取相关对象是否比快速移动并请求QuizQuestion.objects.filter(...)更好,但我是基于这样做的。如果我弄错了请纠正:)

self.model.quizquestion_set.filter(user_is_correct=True)给出:“reversemantoyonedescriptor”对象没有属性“filter”

passed_questions = self.model.quizquestion_set.all()给出reversemantoyonedescriptor'对象没有属性'all'

p.S.我发现很明显我对Django比较陌生-为任何愚蠢的错误道歉。


Tags: 对象django模型self属性onmodelsfilter
1条回答
网友
1楼 · 发布于 2024-09-24 00:26:31

您引用的是模型,需要引用实例(视图显示其详细信息的对象),因为关系是实例而不是模型。您可以使用self.get_object()获取实例:

def get_context_data(self, **kwargs):
    context = super(QuizDetail, self).get_context_data(**kwargs)
    obj = self.get_object()
    passed_questions = obj.quizquestion_set.filter(...)
    return context

相关问题 更多 >