gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 03:53:44 25 4
gpt4 key购买 nike

我在 Django 1.9.7 中有一个通用的 DetailView,它使用我的模型 Quiz 来显示 super 省时的无麻烦 View (谢谢 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

这是我的观点:

class QuizDetail(generic.DetailView):
model = Quiz

def get_context_data(self, **kwargs):
context = super(QuizDetail, self).get_context_data(**kwargs)

# Pass/fail chart
passed_questions = self.model.quizquestion_set.objects.filter(user_is_correct=True)

# ...

return context

这给了我'ReverseManyToOneDescriptor'对象没有属性'objects'

我不确定尝试使用 _set 获取相关对象是否比长途跋涉并要求 QuizQuestion.objects.filter(...),但我是在它的基础上进行操作的。如果我错了,请纠正我:)

self.model.quizquestion_set.filter(user_is_ Correct=True) 给出:''ReverseManyToOneDescriptor' 对象没有属性 'filter''

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

P.S.我发现很明显我对 Django 比较陌生 - 对于任何愚蠢的错误表示歉意。

最佳答案

您引用的是模型,您需要引用实例( View 显示其详细信息的对象),因为关系是针对实例的,而不是针对实例的楷模。您可以使用 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

关于python - 如何在 Django get_context_data 方法中访问模型的外部集合的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37847610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com