Как напрямую запрашивать таблицу, созданную 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)
Ответы
Ответ 1
Это много-много экземпляров полей:
MyModel2.mymodel1
Это модель промежуточной таблицы:
MyModel2.mymodel1.through
Это менеджер промежуточной модели:
MyModel2.mymodel1.through.objects
Это возвращает набор запросов для всех промежуточных моделей:
MyModel2.mymodel1.through.objects.all()
Эта часть django docs говорит о through
. Вы можете сделать модель through
самостоятельно, иначе она будет автоматически сгенерирована.