在Django模板中,我有以下for循环
{% for document in documents %}
<li><a href="{{ document.docfile.url }}">{{ document.docfile.name }}</a></li>
{% endfor %}
通过这个循环,我向用户显示我的应用程序的所有上传文件。
现在说我想向用户显示他/她上传的文件。
我在变量{{ request.user }}
中有当前用户
我还有用户在{{ document.who_upload }}
我的问题是如何在循环中比较这两个变量,以仅显示当前用户具有who_upload
字段的上传?
例如,我尝试了语法
{% if {{ request.user }} == {{ document.who_upload }} %}
{% endif %}
但它似乎不起作用。
此检查的正确语法是什么?
谢谢!
答案 0 :(得分:2)
这应该完成工作:
{% if request.user.username == document.who_upload.username %}
{% endif %}
但是你应该考虑在你的视图中执行这个逻辑。这假设您没有在其他任何地方循环遍历整个查询集。
views.py
========
from django.shortcuts import render
from .models import Document
def documents(request):
queryset = Document.objects.filter(who_upload=request.user)
return render(request, 'document_list.html', {
'documents': queryset
})
答案 1 :(得分:0)
更好的选择是比较用户的主键,而不是比较用户对象,这肯定会有所不同。
{% if request.user.pk == document.who_upload.pk %}
<span>You uploaded this file</span>
{% endif %}