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

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

ItemSet のリストがあります。Item オブジェクトが少なくとも 1 つの 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 に答える