Django - 将2个相关模型的可迭代数据传递给模板

时间:2015-08-21 17:39:51

标签: django list models

我有两个看起来像这样的模型,

class OnlineTest(models.Model):
    name = models.CharField(max_length=50)
    questions = models.ManyToManyField(Question)

class OnlineTestProgress(models.Model):
    examinee = models.ForeignKey(MSchoolMateUser)
    quiz = models.ForeignKey(OnlineTest)
    complete = models.BooleanField(default=False, blank=False)

在我的模板中,我想向用户显示所有测试及其状态。因此,如果OnlineTestProgress模型中的测试状态为COMPLETE,则它将是一个绿色行,如果它不是TAKEN,则它将是一个红色行。

这需要我迭代2个模型,我无法做到这一点。

对于m个测试和n个用户,OnlineTestProgress模型将有m.n个条目,而OnlineTest模型将有m个条目。

我考虑在OnlineTest模型中编写一个函数,但不确定它是否是正确的方法。

感谢您的时间。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

为什么需要迭代两个模型?看起来你只需要遍历OnlineTestProgress?

如果OnlineTestProgress只进行了测试,那么只需在后端添加不在OnlineTestProgress中的所有测试

或者只是遍历OnlineTest并通过将OnlineTestProgress中的所有OnlineTest作为名为taken_list的列表传递来检查每个是否在OnlineTestProgress中并执行

{% for test in OnlineTest %}

    {% if test in taken_list %} [make the row green] {% endif %}

{% endfor %}