Я хотел бы найти, как выбрать все объекты, чье поле ManyToMany содержит другой объект. У меня есть следующие модели (урезанные)
class Category(models.Model):
pass
class Picture(models.Model):
categories = models.ManyToManyField(Category)
visible = models.BooleanField()
Мне нужна функция, чтобы выбрать все картинки в одной или нескольких категориях:
def pics_in_cats(cat_ids=()):
pass
НО он должен вернуть QuerySet, если это возможно, чтобы я мог сделать что-то вроде:
pics_in_cats((1,2,3)).filter(visible=True)
Это можно сделать, загрузив все соответствующие объекты Category и объединив их атрибуты picture_set, но это кажется неэффективным. Я также хотел бы, по возможности, избежать использования необработанного SQL.
Заранее спасибо