Как напрямую запрашивать таблицу, созданную Django для отношения ManyToMany? - программирование
Подтвердить что ты не робот

Как напрямую запрашивать таблицу, созданную Django для отношения ManyToMany?

У меня есть модель MyModel2 с ManyToManyField, связанная с другой моделью MyModel1.

Как я могу получить пары mymodel1.id, mymodel2.id, как показано в таблице Django для этого отношения? Должен ли я выполнять необработанный SQL-запрос в этой таблице или это возможно с помощью диспетчеров объектов этих моделей?

class MyModel1(models.Model):
    name = models.CharField(max_length=50)


class MyModel2(models.Model):
    name = models.CharField(max_length=50)
    mymodel1 = models.ManyToManyField(MyModel1)
4b9b3361

Ответ 1

Это много-много экземпляров полей:

MyModel2.mymodel1

Это модель промежуточной таблицы:

MyModel2.mymodel1.through

Это менеджер промежуточной модели:

MyModel2.mymodel1.through.objects

Это возвращает набор запросов для всех промежуточных моделей:

MyModel2.mymodel1.through.objects.all()

Эта часть django docs говорит о through. Вы можете сделать модель through самостоятельно, иначе она будет автоматически сгенерирована.