簡體   English   中英

篩選ManyToMany關系以查找具有多個匹配關系的項目

[英]Filter a ManyToMany relationship to find items that have multiple matching relations

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

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)

如何正確運行此查詢?

因此,我想出的解決方案是:

tables = Table.objects.all()
for col in columns:
    tables = tables.filter(columns__pk=col.pk)

# tables is now ready to use.

我認為這很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM