質問

ManyToManyフィールドに別のオブジェクトが含まれるすべてのオブジェクトを選択する方法を見つけたいです。次のモデルがあります(削除済み)

class Category(models.Model):
    pass

class Picture(models.Model):
    categories = models.ManyToManyField(Category)
    visible = models.BooleanField()

1つ以上のカテゴリのすべての画像を選択する機能が必要です:

def pics_in_cats(cat_ids=()):
    pass

ただし、可能な場合はQuerySetを返す必要があるため、次のようなことができます。

pics_in_cats((1,2,3)).filter(visible=True)

関連するすべてのCategoryオブジェクトをロードし、それらのpicture_set属性をマージすることで実行できますが、それは非効率的なようです。また、可能であれば生のSQLにフォールバックしないようにします。

事前に感謝

役に立ちましたか?

解決

カスタム関数を作成し、このようなものを使用しないのはなぜですか? (未テスト)

pics = Picture.objects.filter(categories__in = [1,2,3]).filter(visible=True)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top