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

在Django模板的queryset中获取值

邬楚青
2023-03-14

我用Django开发了一个Web应用。在View函数中,我将一个查询集列表呈现到前端。在我的例子中,标题表是书籍信息,材料是这本书的详细信息,附在哪个课程上,如果这个附加关系是“丢弃”。is_discard在材料表中,而不是这本书丢弃与否。在材料表中,一门课程附带几本书,丢弃状态不是按书而是按书-课对,因为有些书可能在一门课程中丢弃,但在其他课程中有效

看法py:

def render_2(request):
    books = Title.objects.filter(name=title).values()
    query_results_book_is_discard = 
    Material.objects.filter(id=book_id).values('is_discard')
    return render(request, 'main.html',
                              context= 
    {'query_results_book_is_discard':query_results_book_is_discard, 
      'book', books})

在前端,query\u results\u book\u is\u discard变量显示以下格式:

<QuerySet [{'is_discard': True}, {'is_discard': False}, {'is_discard': False}, {'is_discard': False}, {'is_discard': True}, {'is_discard': True}, {'is_discard': False}]> 

query_results_book_is_discard变量在前端Django模板中的循环中,我想使用forcle计数器来获取要使用if条件检查的值(True或False)。我尝试过main.html

  {% for book in books %}
     {% if query_results_book_is_discard.counter0 != False %}
 ...

{% if query_results_book_is_discard.counter0.is_discard != False %}

 {% if query_results_book_is_discard.is_discard.counter0 != False %}

都失败了。

我如何才能在查询\u results\u book\u is\u discard to use if条件中获得真值或假值?

共有1个答案

谢鸿飞
2023-03-14

我建议您创建一个自定义模板标记,允许您访问模板中列表的特定索引,如下所示。

您的应用程序文件树结构应具有以下内容:

your_app/
    __init__.py
    models.py
    templatetags/
        __init__.py
        your_app_extras.py
    views.py

然后,在自定义模板标记文件中。

your_app_extras.py

from django import template
register = template.Library()

@register.filter
def index(indexable, i):
    return indexable[i]

然后,在模板中加载自定义模板标签:

{% load your_app_extras %}

然后,在for循环中,使用以下命令:

{% for book in books %}
    {% with query_results_book=query_results_book_is_discard|index:forloop.counter0 %}
        {% if query_results_book.is_discard %}
    {% endwith %}
{% endfor %}
 类似资料:
  • 问题内容: 如何从QuerySet对象获取Django将在数据库上使用的SQL?我正在尝试调试一些奇怪的行为,但是我不确定要对数据库进行哪些查询。谢谢你的帮助。 问题答案: 你打印查询集的属性。

  • 我有这样的疑问: 在模板中,我希望通过以下方式获取数据: 但不是产生数据作为: 它的结果是 发生了什么?我有理由在列表中存储数据。如何分别访问每个数据。谢谢 用途:颜色存储在数据字段中为:,因此我希望实现: 编辑类Hello(models.Model):用户=模型。外键(用户)数据=模型。字符域(最大长度=255)

  • 问题内容: 我在页面上有一些循环,需要根据循环号列出项目。 当我打电话时: 一切正常,但是我真正需要的是: MyCustomRangeTag给了我它可以使用的Python ,而我已经拥有了数量。根据循环号,1、2、3等也是如此。这有可能吗? 问题答案: 这不可能直接实现,因为Django认为这是查找的关键-而不是x 的值。因此,当尝试查找而不是。 使用以下过滤器作为解决方法: 并像这样使用

  • 问题内容: 我想知道如何在模板中获取当前URL。 说我目前的网址是: 如何将其返回到模板? 问题答案: Django 1.9及更高版本: 旧:

  • 问题内容: 如何从Django模板中获取当前站点的域名?我试着寻找标签和过滤器,但那里什么也没有。 问题答案: 我认为你要访问的是请求上下文,请参阅RequestContext。

  • 问题内容: 我有一个Tag模型实例的pk列表,例如 我有另一个模型,其中标签的m2m字段和包含3个标签(以上pks)的实例。 我想检索一个节点,其中包含我pk_list中指定的确切标签集。当我做 它返回三个相同实例的列表 显然,调用.get()无效,因为它必须返回一个实例。 那么,如何检索单个实例?我必须注意,如果我的pk_list不同,例如。[10,6]或[10,6,3,7],那么我什么也得不到