2

中間テーブルに追加のフィールドがある通常のM2Mがあります。

class Customer(models.Model):
    items = models.ManyToManyField(Item, verbose_name=u'Items', through='CustomerItem')

class Item(models.Model):
    pass

class CustomerItem(models.Model):
    item = models.ForeignKey(Item, related_name='customer_items')
    customer = models.ForeignKey(Customer, related_name='customer_items')
    item_count = models.PositiveIntegerField(default=0)

特定の顧客のすべてのアイテムを含むクエリセットを取得したいitem_count > 0。私がこれまでに(ここから)見つけた唯一の方法は、中間テーブルをフィルタリングしてから、Pythonコードでオブジェクトのリストを作成することですが、(フォーム用のChoiceField)クエリセットが必要です。

4

2 に答える 2

6

ここ -

items = Item.objects.filter(customer_items__customer=customer, customer_items__item_count__gt = 0)

外部キーに追加related_name='customer_items'したように。を介してに関連するにItemアクセスできます。残りはケーキです。CustomerItemItemitem.customer_items

于 2013-03-24T16:52:56.000 に答える
2

これはどうですか?

Customer.object.filter(customeritem__item_count__gt=0)
于 2013-03-24T15:14:11.737 に答える