Python Django查询字符串字段是否为字符串的子字符串的优雅方法

Python Django查询字符串字段是否为字符串的子字符串的优雅方法,python,django,Python,Django,为了澄清这一点,我不是要Article.objects.filter(headline_uin=['Doge'、'Cat'、'Lizard'])而是想用另一种方式来做。有点像这样的逻辑 q = Q() for word in headline.split(): q |= Q(keywords__keyword__icontains=word) KeywordSubscription.objects.filter(q).all() 类似的东西。我不确定是否有快捷方式或某种功能可以让我访问

为了澄清这一点,我不是要
Article.objects.filter(headline_uin=['Doge'、'Cat'、'Lizard'])
而是想用另一种方式来做。有点像这样的逻辑

q = Q()
for word in headline.split():
    q |= Q(keywords__keyword__icontains=word)
KeywordSubscription.objects.filter(q).all()
类似的东西。我不确定是否有快捷方式或某种功能可以让我访问所需内容

输入: “猫正在接管世界!”

我的表是用户和关键字之间的映射(多对多字段):

每个用户都可以订阅几个关键字,例如,假设用户_0订阅了cat,用户_1订阅了dog,上面的查询将循环到:['Cats','are','taking','over','the','world',并检查订阅了其中任何一个关键字的用户

澄清2:代码有效,只是不够优雅

编辑:

结果看起来是这样的

query = reduce(operator.or_, (Q(keywords__keyword__iexact=word) for word in instance.headline.split()))

您能添加输入和预期输出吗?@cdvv7788还添加了模型和更多上下文。类似的内容可以帮助您查找列表。您可以从关键字模型开始,找到所有匹配的,然后执行:KeywordSubscription.objects.filter(keywords=result_keywords),这将需要两个查询。您可以添加输入和预期输出吗?@cdvv7788添加了模型和更多上下文。类似的内容可以帮助您查找列表。您可以从关键字模型开始,找到所有匹配的关键字,然后执行:KeywordSubscription.objects.filter(keywords=result\u keywords),这将需要两个查询。
query = reduce(operator.or_, (Q(keywords__keyword__iexact=word) for word in instance.headline.split()))