Нет, но вы можете использовать атрибут through
, чтобы явно определить промежуточную модель:
Django автоматически сгенерирует таблицу для управления отношениями "многие ко многим",Однако, если вы хотите указать промежуточную таблицу вручную, вы можете использовать опцию through, чтобы указать модель Django, представляющую промежуточную таблицу, которую вы хотите использовать.
class ModelB(models.Model):
name = models.CharField(max_length=100)
model_a = models.ManyToManyField(ModelA, through='MyIntermediate')
class MyIntermediate(models.Model):
model_a = models.ForeignKey(ModelA, on_delete=models.CASCADE)
model_b = models.ForeignKey(ModelB, on_delete=models.CASCADE)
, тогда вы можете обратитьсяк промежуточной модели следующим образом:
class ModelC(models.Model):
name = models.CharField(max_length=100)
intermediate_ab = models.ForeignKey(MyIntermediate, on_delete=models.CASCADE)
Обратите внимание, что после этого изменения вы не сможете использовать виджет администратора Django.Из документации :
Когда вы указываете посредническую модель, использующую аргумент through для ManyToManyField, администратор не будет отображать виджет по умолчанию.Это связано с тем, что для каждого экземпляра этой промежуточной модели требуется больше информации, чем можно было бы отобразить в одном виджете, а компоновка, требуемая для нескольких виджетов, будет варьироваться в зависимости от промежуточной модели.