1

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

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)

不会工作。它返回给我这两者的结合。但是,我想要这两个条件的交集,而不是联合。我知道发生这种情况是因为用户和文本属于不同的模型。

4

1 回答 1

4

为了确保我们在同一页面上,联合和交叉的含义,让我们举一个简短的例子:

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))
于 2015-01-21T08:52:57.490 回答