Django отношение OneToMany к существующей базе данных - PullRequest
0 голосов
/ 02 апреля 2020

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

Есть таблица с именем regionsubregion, в которой есть idregion и idsubregion, необходимые для создание связи между Регионом и Подрегионом. Я делал просто ForeingKeys вот так:

class Region(BaseModel):
    id_region = models.IntegerField(primary_key=True, db_column="idregion")
    name = models.CharField(verbose_name="Nome", db_column="description", max_length=80)
    uf = models.CharField(
        verbose_name="Unidade Federal", db_column="ufe_sg", max_length=2
    )

class SubRegion(BaseModel):
    id_subregion = models.IntegerField(primary_key=True,db_column='idsubregion')
    region = models.ForeignKey(
        "Region", on_delete=models.DO_NOTHING, related_name="subregions"
    )
    name = models.CharField(verbose_name="Nome", db_column="description", max_length=80)

Обсуждаемые таблицы: region и subregion. Но у таблицы subregion нет данных, относящихся к идентификатору родительского региона, эта информация содержится в таблице regionsubregion, например:

idregion idsubregion
8   3
8   10
8   26
9   23
9   28
9   41
9   8
10  18

До того, как между многими из них было отношение два, но теперь это только 1 к N (один регион имеет много субрегионов, один субрегион привязан только к одному региону).

Поскольку информация об отношениях находится в совершенно другой таблице, и я запутался в том, что Django ожидает от меня. Я хотел бы избежать создания новых таблиц, и создание новой модели только для этого кажется немного странным. Можно ли как-нибудь сделать эту работу?

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