当前位置: 首页 > 知识库问答 >
问题:

使用with template标记筛选模型查询集

柳威
2023-03-14

是否有方法将queryset筛选器与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 %}

有没有办法得到我需要的过滤?我正在尝试为超级用户/工作人员和常规用户显示不同的查询集,这样我就可以进行一些状态更新等,而不必进入管理页面。

共有1个答案

汪栋
2023-03-14

templates中编写逻辑是一种糟糕的惯例/实践。模板应该传递数据,仅此而已。在您的情况下,可以在视图中执行此操作。

app/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)

app/templates/articles.html

{% for a in articles %}
    {% a.title %}
    {% a.content %}
{% endfor %}
 类似资料:
  • 我认为按用户筛选对象的正确方法是在视图中完成的,因为您可以很容易地要求登录,并且可以访问。但是我有一个调用对象的classmethod的视图,它不能与筛选器结合,因为它将queryset转换为list对象-所以我想如果有一种方法可以通过用户直接在模型中筛选queryset,那么当我在视图中调用classmethod时,对象就已经被筛选了。 以下是我的观点: 带有自定义管理器的模型: 在ClassM

  • null 但他们都不为我工作。如果有人有这些包的工作例子,请指导。 还有其他过滤测试的方法吗?

  • 英文原文:http://emberjs.com/guides/models/finding-records/ Ember Data仓库提供了一个非常简单的查询一类记录的接口,该接口就是store对象的find方法。在内部,store根据传入的参数使用find、findAll和findQuery完成查询。store.find()的第一个参数是记录的类型,第二个可选参数确定查询是获取所有记录,还是一条

  • 我看不到任何关于何时应该使用查询或过滤器或两者结合的描述。他们之间有什么区别?谁能解释一下吗?

  • 应用筛选器之前的示例使用者记录是(在值中查找GP_ID): 当我在kafkaListenerContainerFactory()中按如下方式设置recordFilterStrategy时: KafKareCordvo.ConvertByteBufferToLong正在将bytebuffer值转换为long值。 但是,当它被Kafka听众按以下方式消费时: 这将返回删除我筛选的字段值的记录:“gp_

  • 我在Scala上有一个项目。我使用这个库记录https://github.com/typesafehub/scala-logging 我创建记录器 和两个标记 为什么marker和marker2可见,为什么DENY不起作用? 如何排除两个标记? 如何只排除一个标记?