两个QuerySets的交叉点

2024-09-28 05:18:24 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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)

不起作用。它把这两个人的结合还给了我。然而,我不想要这两个条件的结合。我知道这是因为用户和文本属于不同的模型。你知道吗


Tags: 用户name模型authverbosemodelmodelsfilter
1条回答
网友
1楼 · 发布于 2024-09-28 05:18:24

为了确保我们对并集和交集的含义理解一致,让我们举一个简短的例子:

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))

相关问题 更多 >

    热门问题