1

Feature と M2M 関係にある Item モデルがあるとします。

class Item(models.Model):
    features = models.ManyToManyField(to = 'Feature')

Itemここで、クエリセットをフィルタリングして、少なくとも指定されたすべての機能を持つアイテムのみを含めたいと思います。

考えられる機能は次CameraのとおりですTouchscreenKeyboard

今、カメラとキーボードの両方を持つすべてのアイテムを選択したいと思います

解決策はありますか?

4

2 に答える 2

3

機能のモデルに「名前」というフィールドがあると仮定すると、値のリストでそのフィールドに一致するアイテムをフィルタリングできます。次のようなものが機能します。

Item.objects.filter(features__name__in=['Camera', 'Touchscreen', 'Keyboard'])

アップデート:

ストークがここで言うように、すべての機能に一致するアイテムを取得するには、クエリに対して多くの「フィルター」を実行する必要があります。動的に取得する方法は次のとおりです。

features = ['Camera', 'Touchscreen', 'Keyboard']
items = Item.objects.all()

for feature in features:
  items = items.filter(feature__name=feature)

このようにして、アイテムに一致する機能の動的リストを渡すことができます。

于 2013-04-26T15:32:08.703 に答える