我对django app有问题:
class Module(models.Model):
requirements = models.ManyToManyField("self", related_name='wym', symmetrical=False)
status = ''
class EndedModules(models.Model):
user = models.ForeignKey('auth.User')
module = models.ForeignKey('Module')
end_time = models.DateTimeField(blank=True, null=True)
并在视野中:
modules = Module.objects.all()
for module in modules:
try:
exist = EndedModules.objects.get(user=request.user,module=module)
if exist.end_time:
module.status = 'ended'
else:
module.status = 'started not ended'
except:
module.status = 'not exist'
但是当我试图在模板中显示时:
{% for module in modules %}
{% for element in module.requirements.all %}
{{ element.status }}
{% endfor %}
{% endfor %}
它不起作用。
还有其他方法吗?
我试图在模型中使用此功能,但我无法访问request.user
谢谢!
答案 0 :(得分:0)
您在第一个status
循环中设置module
属性,同时迭代模板中完全不同的数据集(requirements.all
)。
假设您将modules
传递给模板上下文,根据您的视图,您已在外部module
循环上设置属性,但不在内部element
循环中设置属性。外部循环对应于模板中的{{ module.status }}
。
{{ element.status }}
正在迭代新创建的查询集,并会反映您在类定义中的内容status = ''
{% for module in modules %}
{% for element in module.requirements.all %}
{{ element.status }}
<!-- ^^^ this doesn't have a status value - only {{ module.status }} -->
{% endfor %}
{% endfor %}