我有两个看起来像这样的模型,
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模型中编写一个函数,但不确定它是否是正确的方法。
感谢您的时间。非常感谢您的帮助。
答案 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 %}