django, как определить модели для существующих таблиц многих-многих в базе данных postgresql - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть существующая база данных PostgreSQL с отношением «многие ко многим», она обрабатывается через таблицу соединений, как показано ниже.

Я ищу применение типа поля ManyToMany, позволяет ли это обойти это соединение / промежуточное соединение?Таблица?Как мне правильно настроить его в моем models.py?Я бы предпочел сохранить промежуточный стол.

# models.py
class Sample(models.Model):
    sample_id = models.AutoField(primary_key=True)
...

class JoinSampleContainer(models.Model):
    id = models.AutoField(primary_key=True)
    container_id = models.ForeignKey(Container, db_column='container_id', on_delete = models.PROTECT)
    sample_id = models.ForeignKey(Sample, db_column='sample_id', on_delete = models.PROTECT)
...

class Container(models.Model):
    container_id = models.AutoField(primary_key=True)

1 Ответ

0 голосов
/ 19 февраля 2019

Определите ManyToManyField на одной из ваших моделей (например, Sample), указав опцию through в качестве , задокументированную здесь :

class Sample(models.Model):
    id = ...
    containers = models.ManyToManyField(Container, through='JoinSampleContainer', through_fields=('sample_id', 'container_id'),
        related_name='samples')

Примечание.поля в ваших моделях для удобства чтения (и используйте db_column для указания используемого столбца БД).Используйте id вместо sample_id, гораздо удобнее читать sample.id вместо sample.sample_id.И используйте sample вместо sample_id, соответственно container вместо container_id на сквозной модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...