gpt4 book ai didi

django 动态过滤 q 个对象

转载 作者:行者123 更新时间:2023-11-28 19:36:02 25 4
gpt4 key购买 nike

我正在尝试根据用户输入标签查询数据库。标签的数量可以是 0-5,所以我需要动态创建查询。

所以我有一个标签列表,tag_list,我想查询数据库:

design_list = Design.objects.filter(Q(tags__tag__contains = "tag1") and Q(tags__tag__contains = "tag2") and etc. etc. )

如何创建此功能?

最佳答案

您需要遍历 tag_list 并为每个应用过滤器。

tag_list = ['tag1', 'tag2', 'tag3']
base_qs = Design.objects.all()
for t in tag_list:
base_qs = base_qs.filter(tags__tag__contains=t)

这将为您提供匹配所有 标签的结果,如您的示例所示,。如果实际上您需要 ,您可能需要 Q 对象。

编辑:我想我现在有你要找的东西。

tags = ['tag1', 'tag2', 'tag3']
q_objects = Q() # Create an empty Q object to start with
for t in tags:
q_objects |= Q(tags__tag__contains=t) # 'or' the Q objects together

designs = Design.objects.filter(q_objects)

我测试了这个,它似乎工作得很好。

编辑 2:最初的想法归功于 Freenode 上#django 中的 kezabelle。

关于django 动态过滤 q 个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13076822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com