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

标签 django django-queryset django-orm

我正在做标签搜索功能,用户可以观察到很多标签,我把所有的都放在一个元组中,现在我想从列表中找到至少包含一个标签的所有文本。
符号: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 the cinemai will drive my开车去电影院 感谢您的帮助!

最佳答案

给你:

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

一些提示:

  • 您应该使用大写字母命名您的模型类(即 Text,而不是 text)
  • 如果您不担心这种情况,您可能需要 __icontains

关于django - 连接 __contains 和 __in 的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1732680/

相关文章:

python - 如何在 Django 中动态注入(inject) HTML 代码

django - 为什么我在互联网速度较慢的情况下将文件上传到服务器时出现 ERR_HTTP2_PING_FAILED?

python - QuerySet 对象在 Django Rest Framework 上没有属性 'user'

python - Django ORM 查询 : getting "has many" relation objects

python - Django多数据库: Route all writes to multiple databases

django - 在 django admin 中使用按钮调用函数

mysql - Django 和 MySQL 发生奇怪的错误

python - Django QuerySet 查询或过滤特定字段中的 "Odd"和/或 "Even"值

python - Django 中 QuerySet 中特定列的平均重复项

sql - 为什么此Django原始SQL查询未返回输出?