gpt4 book ai didi

python - Django ManyToMany 关系 "Contains"声明

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:55 25 4
gpt4 key购买 nike

我正在构建一个小型任务管理器,所有任务都有标签。我需要选择所有有几个标签的任务。目前,我正在做:

    tasks = Task.objects.all().filter(labels__in=label_list).distinct()

它返回所有任务,其中至少一个标签也在 label_list 中,但我只需要所有标签都在 label_list 中的任务。

更精确的示例:如果我将 ['1', '2'] 作为 label_list 传递,我想要所有带有标签 1 OR 标签的任务2 被返回(这就是现在正在发生的事情),但想要返回标签 1 AND 标签 2 的所有任务。

我想要标签包含标签列表的任务

关系任务标签是多对多:

class Task(models.Model):
....
labels = models.ManyToManyField(Label, null=True, blank = True)
....

最佳答案

这已经达到了 django 的 ORM 的限制,但你可以尝试:

labels = ['1', '2']
qs = Task.objects.all()
for label in labels:
qs = qs.filter(labels=label).distinct()

显然很难看,而且对于一长串标签来说,这将是一项相当昂贵的操作,但它可能会让你顺利通过。

或者,您可以查看 django-taggit这是一个成熟的 django 标记应用程序,提供类似的“标签”功能。他们使用原始 SQL 处理“包含”问题。

关于python - Django ManyToMany 关系 "Contains"声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26267110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com