Python Django中两个搜索查询集的交集

Python Django中两个搜索查询集的交集,python,django,django-haystack,searchqueryset,Python,Django,Django Haystack,Searchqueryset,所以我有一个类似的模型: class Whatever(SlugMixin, models.Model): user = models.ForeignKey(auth_models.User, related_name='user+', verbose_name=_('User'), on_delete=models.PROTECT) name = models.CharField(verbose_name=_('Name'), max_length=200) 我正在尝试查找属

所以我有一个类似的模型:

class Whatever(SlugMixin, models.Model):
    user = models.ForeignKey(auth_models.User, related_name='user+', verbose_name=_('User'), on_delete=models.PROTECT)
    name = models.CharField(verbose_name=_('Name'), max_length=200)
我正在尝试查找属于该用户且名称与搜索词匹配的所有对象

我已经了解到:

SearchQuerySet().filter(text=searched_term).filter(user=user)

不行。这让我想起了这两个人的结合。然而,我想要的是这两个条件的交集,而不是并集。我理解这是因为用户和文本属于不同的模型。

< P>只是为了确保我们在同一个页面上有什么联系和交叉点,让我们举一个简短的例子:

A组=[1,2,3]

B组=[2,3,4,5]

A和B的交点为[2,3]

A和B的并集是[1,2,3,4,5]

如果您正在寻找十字路口:

desired_queryset = Whatever.objects.filter(user=user, name=searched_term)
如果您正在寻找工会:

from django.db.models import Q
desired_queryset = Whatever.objects.filter(Q(user=user) | Q(name=searched_term))

为了确保我们在同一个页面上有什么联系和交叉点,让我们举一个简短的例子:

A组=[1,2,3]

B组=[2,3,4,5]

A和B的交点为[2,3]

A和B的并集是[1,2,3,4,5]

如果您正在寻找十字路口:

desired_queryset = Whatever.objects.filter(user=user, name=searched_term)
如果您正在寻找工会:

from django.db.models import Q
desired_queryset = Whatever.objects.filter(Q(user=user) | Q(name=searched_term))

是的,我实际上使用了相同的操作,只是我使用了text=searched\u term而不是name=searched\u term。似乎还有另一个bug导致了奇怪的结果。如果搜索的_项的长度为1,则忽略此筛选器。是的,我实际上使用了相同的操作,只是我使用了text=searched\u term而不是name=searched\u term。似乎还有另一个bug导致了奇怪的结果。如果搜索的_项的长度为1,则忽略此筛选器。我们必须更深入地挖掘这一点。