【问题标题】:Filter a ManyToMany relationship to find items that have multiple matching relations过滤多对多关系以查找具有多个匹配关系的项目
【发布时间】:2016-05-23 22:45:26
【问题描述】:

我有描述表和列的模型,其中一列可以在多个表中,反之亦然:

class Table(models.Model):
   column = models.ManyToManyField("Column")

class Column(models.Model):
    name = models.CharField(max_length=256)

给定一组列,我试图找到所有包含这些列的表:

from django.db.models import Q
for col in columns:
    queries &= Q(columns__pk=col.pk)
table = Table.objects.filter(queries)

当我通过每次迭代打印时,第一次迭代很好,但每次后续迭代都是空的。

    for col in columns:
        queries &= Q(columns__pk=col.pk)
        print Table.objects.filter(queries)

    table = Table.objects.filter(queries)

如何正确运行此查询?

【问题讨论】:

    标签: python django django-orm


    【解决方案1】:

    所以我想出的解决方案是这样的:

    tables = Table.objects.all()
    for col in columns:
        tables = tables.filter(columns__pk=col.pk)
    
    # tables is now ready to use.
    

    我认为这很有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 2023-03-11
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多