8
class Item(models.Model):
    ...

class ItemSet(models.Model):
    items = models.ManyToManyField(Item, related_name="itemsets")

我有一个 ItemSet 列表。我想在至少一个 ItemSet 对象的“items”M2M 字段中找到所有 Item 对象。

我怎样才能做到这一点?

PS这是我尝试过的,但无济于事:

itemset_list = [itemset1, itemset2, itemset3]    
items = Item.objects.filter(itemsets__in=itemset_list)
4

1 回答 1

16

如果您需要您的项目集列表并且您没有从查询中获得它们,请尝试以下操作:

itemset_list = [itemset1, itemset2, itemset3]
itemset_list_ids = [itemset.id for itemset in itemset_list]
itemset_queryset = ItemSet.objects.filter(id__in=itemset_list_ids)
items = Item.objects.filter(itemsets__in=itemset_queryset)

如果您可以通过查询获得您的项目集列表,那么它会缩短一点:

itemset_queryset = ItemSet.objects.filter(SOME FILTER HERE)
items = Item.objects.filter(itemsets__in=itemset_queryset)
于 2012-05-06T19:02:22.193 回答