@gh0sty
Веб-разработчик. Пишу под Python Django.

Как создать фильтр из ManyToMany и contains в Django?

У меня есть такие модельки:
class Model1(models.Model):
    ...
class Model2(models.Model):
    m2m_field = models.ManyToManyField(Model1)

Во views я получаю такие данные:
m1 = Model1.object.get(...) #он просто у меня есть
m2 = Model2.objects.all()

Как мне создать фильтр вроде:
x = m2.filter(m2m_field__contains=m1)
Ну и фишка в том, что так не сработает, а циклом делать - дикость, большие данные. Гуглил много, in - тоже не то.
Типо отобрать инстансы, у которых m2m содержит этот объект m1.
  • Вопрос задан
  • 1547 просмотров
Решения вопроса 1
@antonksa
Кривое у доктора решение.
Нужно так:
class Model2(models.Model):
    m2m_field = models.ManyToManyField(to=Model1, related_name='second_models')

И потом:
m1 = Model1.object.get(...) #он просто у меня есть
second_model_queryset = m1.second_models.all()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы