1

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にフォールバックしないようにしたいと思います。

前もって感謝します

4

1 に答える 1

3

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

pics = Picture.objects.filter(categories__in = [1,2,3]).filter(visible=True)
于 2009-11-30T12:55:52.720 に答える