如何比较 Django 模板中的两个查询集?

     2023-02-24     169

关键词:

【中文标题】如何比较 Django 模板中的两个查询集?【英文标题】:How to compare two querysets in Django templating? 【发布时间】:2017-12-16 04:27:22 【问题描述】:

这听起来可能与其他关于使用 zip 和其他选择比较两个查询集的帖子非常相似,但我已经阅读了很多,但没有一个让我知道我可以为我需要的比较做些什么。

首先,我从数据库中获取查询,并且在 HTML 模板中我需要为 select 元素生成一些默认值。使用一个默认值很容易,但是使用 multiple 我遇到了麻烦,因为 Django 模板中没有 break

假设我有两个从后端返回的查询集:

[<J: j1>, <J: j2>, <J: j3>, <J: j4>]
[<J: j2>, <J: j4>]

我一开始就尝试过这样的事情,我可以理解它循环的次数超出了需要,所以我得到的输出也比需要的多。我尝试搜索会破坏循环的东西,但我认为 Django 模板中没有破坏循环。

<select name="" id="">
    % for j in all_j %
        % for s in all_s %
            % if j.id == s.id %
                <option value=" j.id " selected="selected"> j.name </option>
            % else %
                <option value=" j.id "> j.name </option>
            % endif %
        % endfor %
    % endfor %
</select>

我尝试了其他方法,例如

<select name="" id="">
    % for s in all_s %
        % if s in all_j %
            <option value=" j.id " selected="selected"> j.name </option>
        % else %
            <option value=" j.id "> j.name </option>
        % endif %
    % endfor %
</select>

然后我想它只有在它为真时才会得到输出,else 中的东西不会运行。

有人可以给我一个想法或知道我可以在这种情况下做什么吗?

以下是我想要实现的目标。

【问题讨论】:

我不会提供这个作为答案,因为它不完全符合您的要求,但作为设计选择,我非常考虑将其移至模板标签 (@ 987654322@) 或者只是在您的视图代码中执行它并在模板上下文中提供结果。 如果你真的想在模板中做这个,那就制作你自己的模板过滤器,pfinn.net/custom-django-filter-tutorial.html 【参考方案1】:

试试这个:

views.py

from django.shortcuts import render


def home(request):
    context = 
        'all_s': ['j1', 'j2', 'j3', 'j4'],
        'all_j': ['j2', 'j4']
    
    return render(request, 'index.html', context)

index.html

<html>
<header>
    <title></title>
</header>
<body>
<select name="bla" id="" multiple style="width: 200px;">
    % for s in all_s %
        % if s in all_j %
            <option value=" s " selected="selected"> s </option>
        % else %
            <option value=" s "> s </option>
        % endif %
    % endfor %
</select>
</body>
</html>

结果:

【讨论】:

arg,难怪你提到我的解决方案应该有效。我把自己弄乱了变量名>。

如何获取与传递给 Django 模板的查询集相关的查询集对象

】如何获取与传递给Django模板的查询集相关的查询集对象【英文标题】:HowdoyougetquerysetobjectsrelatedtoquerysetpassedtotemplatesinDjango【发布时间】:2021-02-2518:20:42【问题描述】:我有这两个模型,你可以看到它们有关系。classPost(models.Mo... 查看详情

如何将数据库查询集对象从基于类的视图传递到 Django 2.0 中的模板

】如何将数据库查询集对象从基于类的视图传递到Django2.0中的模板【英文标题】:HowtopassdatabasequerysetobjectsfromclassbasedviewstotemplatesinDjango2.0【发布时间】:2018-02-0719:37:24【问题描述】:我正在构建一个Web应用程序。我正在尝试将... 查看详情

如何访问由 AJAX 响应返回到模板的查询集 - Django

】如何访问由AJAX响应返回到模板的查询集-Django【英文标题】:HowtoaccessQuerysetreturnedtotemplatebyAJAXresponse-Django【发布时间】:2021-03-3105:06:23【问题描述】:我想使用ajax将查询集返回到模板。这是我在一个单独的js文件中的ajax函数... 查看详情

将视图中的 Django 查询集传递给模板

】将视图中的Django查询集传递给模板【英文标题】:PassingDjangoQuerysetinViewstoTemplate【发布时间】:2018-07-1016:17:41【问题描述】:我有一个DjangoViews,它有一些逻辑可以将正确的类别传递给模板。classProductListView(ListView):model=models.Pro... 查看详情

如何复制查询集Django

】如何复制查询集Django【英文标题】:HowtocopyquerysetDjango【发布时间】:2016-12-2800:43:15【问题描述】:我试图在defsave_related(self,request,form,*args,**kwargs)方法中保存之前和之后访问ManyToManyField的查询集。我想比较它们并获得添加到Man... 查看详情

如何合并两个查询集并在 django 中创建新的查询集

】如何合并两个查询集并在django中创建新的查询集【英文标题】:HowtomergetwoQuerysetsandcreatenewquerysetindjango【发布时间】:2021-11-1014:17:13【问题描述】:我有两个用于空调两部分的模型,即用于显示所有室内机信息的室内机的IndoorI... 查看详情

在 Django 中使用两个以不同方式格式化的查询集进行分页

】在Django中使用两个以不同方式格式化的查询集进行分页【英文标题】:PaginationinDjangowithtwoQuerysetsformattedindifferentways【发布时间】:2019-12-0809:48:53【问题描述】:我想让分页处理以不同方式格式化的两个单独的查询集。第一个... 查看详情

Django:如何使用查询集并在模板中显示结果?

】Django:如何使用查询集并在模板中显示结果?【英文标题】:Django:howtouseaquerysetanddisplayresultsinatemplate?【发布时间】:2016-03-1609:02:20【问题描述】:我正在为DjangoQuerySets苦苦挣扎。这是我的数据库的JSON转储数据:["fields":"label_n... 查看详情

Django模板:检查空查询集

】Django模板:检查空查询集【英文标题】:Djangotemplate:checkforemptyqueryset【发布时间】:2013-06-3009:21:36【问题描述】:有没有办法检查Django模板中的空查询集?在下面的示例中,我只希望在有注释时显示NOTES标题。如果我将%empty%放... 查看详情

如何找到两个 Django 查询集的交集?

】如何找到两个Django查询集的交集?【英文标题】:HowcanIfindtheintersectionoftwoDjangoquerysets?【发布时间】:2011-05-2314:39:54【问题描述】:我有一个带有两个自定义管理器方法的Django模型。每个都根据对象的不同属性返回模型对象的... 查看详情

如何在 django 中相交两个查询集?

】如何在django中相交两个查询集?【英文标题】:Howtointersecttwoquerysetsindjango?【发布时间】:2022-01-1315:01:44【问题描述】:我有两个问题。其中一个有产品id和销售金额,另一个有产品id和产品价格。query_product=Model1.objects.filter(...... 查看详情

Django:如何使用 Prefetch 对象“加入”两个查询集?

】Django:如何使用Prefetch对象“加入”两个查询集?【英文标题】:Django:Howto"join"twoquerysetsusingPrefetchObject?【发布时间】:2021-11-1523:11:43【问题描述】:上下文我对Django很陌生,我正在尝试编写一个复杂的查询,我认为在... 查看详情

有没有办法将 Django 模型查询集转换为模板中的 json 或 json 字符串?

】有没有办法将Django模型查询集转换为模板中的json或json字符串?【英文标题】:IsthereanywayconvertDjangomodelquerysettojsonorjsonstringintemplate?【发布时间】:2018-04-2214:02:47【问题描述】:我想将react(或vue)与django模板结合起来,但我不... 查看详情

如何比较 Django 模板中的 IntegerChoice 值

】如何比较Django模板中的IntegerChoice值【英文标题】:HowtocompareIntegerChoicevaluesinDjangoTemplates【发布时间】:2021-08-2517:10:40【问题描述】:我打算在Django模板中比较IntegerChoice的值:classSomeModel(models.Model):classAnswer(models.IntegerChoices):NO=... 查看详情

django 模板从查询集更改了日期格式

】django模板从查询集更改了日期格式【英文标题】:djangotemplatechangeddateformatfromqueryset【发布时间】:2013-03-2700:20:28【问题描述】:我创建了一个查询集:my_data=My_User.objects.filter(Q(first_name=\'John\')|Q(last_name=\'Doe\'))现在my_data中的字... 查看详情

Django 在模板中使用两个不同的数据集填充表

】Django在模板中使用两个不同的数据集填充表【英文标题】:Djangopopulatingtableintemplatewithtwodifferentdatasets【发布时间】:2021-01-2115:24:36【问题描述】:我有问题。我需要用两组不同的数据填充一个表,一个是查询集,另一个是列... 查看详情

如何比较 Django 模板中的日期

】如何比较Django模板中的日期【英文标题】:HowtocomparedatesinDjangotemplates【发布时间】:2011-04-1711:05:49【问题描述】:我想在Django中将日期与当前日期进行比较,最好在模板中进行比较,但也可以在渲染模板之前进行。如果日期... 查看详情

我想在 Django 中进行两个查询集搜索

】我想在Django中进行两个查询集搜索【英文标题】:IwanttomaketwoquerysetsearchinDjango【发布时间】:2019-03-0300:54:47【问题描述】:使用django.Filter()搜索或过滤已保存在django中的帖子的详细信息。使用django的Q在查询集中进行搜索。使... 查看详情