Jinja2 - 检查一个查询集元素是不是在另一个

Posted

技术标签:

【中文标题】Jinja2 - 检查一个查询集元素是不是在另一个【英文标题】:Jinja2 - Check to see if one query set elements are in anotherJinja2 - 检查一个查询集元素是否在另一个 【发布时间】:2018-08-30 22:06:16 【问题描述】:

所以我有两个查询集,我正在努力寻找一种方法来检查查询集 1 是否包含查询集 2 中的所有元素。但是,查询集 2 的元素比查询集 1 多,但我只想检查如果查询集 1 在第二个中包含所有元素。

谁知道这个问题的解决方案?

到目前为止,我已经在我的 jinja2 模板中使用了它

查询集 1 = group.dependancies 查询集 2 = 选定组

但我真的希望它显示依赖关系是否得到满足,而不是简单地列出缺少的依赖关系。

% for dp in group.dependancies.all() %
  % if dp not in SelectedGroups.all() %

    <p>Missing dependancy  dp </p>

  % endif %
% endfor %

【问题讨论】:

【参考方案1】:

不要在 Jinja2 模板上执行此操作,而是在生成这些查询集的任何位置:

result =  all(item in list(group.dependancies.all()) for item in list(SelectedGroups.all()))
if result:
    msg = "<p>All dependencies satsfied.</p>"
else:
    msg = "<p>Dependencies missing.</p>

然后将 msg 返回到模板并使用msg 进行渲染。

【讨论】:

谢谢,我感觉我看问题的方式不对。 @Jack 很高兴为您提供帮助。试试看,如果它不适合你,请告诉我。如果是这样,接受总是受到赞赏:) 是的,你提供的代码派上用场了,让它工作,再次感谢:)

以上是关于Jinja2 - 检查一个查询集元素是不是在另一个的主要内容,如果未能解决你的问题,请参考以下文章

如何检查一个元素是不是存在于 Django 查询集中?

检查两个 Django 查询集是不是有任何共同的项目

如何使用 jinja2 检查字典中的列表元素?

检查数组中的每个元素是不是匹配条件

HQL:一个集合的元素是不是在另一个集合中?

Jinja2:说“在另一个宏或模板中渲染这个宏”