连接 __contains 和 __in 最简单的方法是什么?

发布于 2024-08-10 19:01:36 字数 446 浏览 7 评论 0原文

我正在做标签搜索功能,用户可以观察很多标签,我将所有标签都放在一个元组中,现在我想找到包含列表中至少一个标签的所有文本。
符号:text__contains__in=('asd','dsa')
我唯一的想法是做循环,例如:

q = text.objects.all() 

for t in tag_tuple: 
   q.filter(data__contains=t)

例如: 输入标签元组,('car', 'cat', 'cinema') 输出包含该元组中至少一个单词的所有消息,因此 My cat is in the carcat is not allowed in thecinemai will Drive my开车去电影院 感谢您的帮助!

I am doing tag search function, user could observe a lot of tags, I get it all in one tuple, and now I would like to find all text which include at least one tag from the list.

Symbolic: text__contains__in=('asd','dsa')

My only idea is do loop e.g.:

q = text.objects.all() 

for t in tag_tuple: 
   q.filter(data__contains=t)

For example:
input tuple of tags, ('car', 'cat', 'cinema')
output all messages what contains at least one word from that tuple, so My cat is in the car , cat is not allowed in the cinema, i will drive my car to the cinema
Thanks for help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拔了角的鹿 2024-08-17 19:01:36

给你:

filter = Q()
for t in tag_tuple: 
   filter = filter | Q(data__contains=t)
return text.objects.filter(filter)

一些提示:

  • 您应该使用大写字母命名模型类(即 Text,而不是 text
  • 您可能需要 __icontains 相反,如果你不担心这个案子

Here you go:

filter = Q()
for t in tag_tuple: 
   filter = filter | Q(data__contains=t)
return text.objects.filter(filter)

A couple of tips:

  • You should be naming your model classes with a capital (i.e. Text, not text)
  • You may want __icontains instead if you're not worried about the case
铜锣湾横着走 2024-08-17 19:01:36

我不了解 Django,所以我不知道如何应用这个过滤器,但似乎你想要一个像这样的函数:

def contains_one_of(tags, text):
    text = text.split()   # tags should match complete words, not partial words
    return any(t in text for t in tags)

I don't know Django, so I have no idea how to apply this filter, but it seems you want a function like this one:

def contains_one_of(tags, text):
    text = text.split()   # tags should match complete words, not partial words
    return any(t in text for t in tags)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文