有没有办法将查询集过滤器与with
模板标记结合使用?
我正在尝试执行以下操作:
{% if request.user.is_superuser %}
{% with arts=category.articles.all %}
{% else %}
{% with arts=category.get_active_articles %}
{% endif %}
#other statements
# Do some more template stuff in for loop
其他变体:
{% with arts=category.articles.all if self.request.user.is_superuser else category.get_active_articles %}
无法在模型中执行自定义查询集,因为我没有请求。
有没有办法获得我需要的过滤?我正在尝试为超级用户/员工和普通用户显示不同的查询集,以便我可以更新状态等而无需转到管理页面。
答案 0 :(得分:1)
在templates
中编写逻辑是一种不好的约定/做法。 Templates
应该传递数据,就是这样。在您的情况下,您可以在views
。
应用/ views.py 强>
from django.shortcuts import render
from app.models import Category
def articles(request):
if request.user.is_superuser:
articles = Category.articles.all()
else:
articles = Category.get_active_articles()
context = {'articles': articles}
return render(request, 'articles.html', context)
应用/模板/ articles.html 强>
{% for a in articles %}
{% a.title %}
{% a.content %}
{% endfor %}
PS:阅读this以了解WHERE应该存在的内容。