Я разрабатываю API отдыха с Django Rest Framework
для домашней страницы статистики для администратора.
Служба уже выполняется, и я прикрепил Django к базе данных, которая уже была создана.
models.py был создан с помощью managy.py inspectdb
.
В существующих таблицах нет внешних ключей (или OneToOneField). Поэтому я пытаюсь создать внешний ключ самостоятельно в сгенерированном models.py.
Но я нашел таблицу, в которую вставляются PK нескольких таблиц в один столбец.
# models.py
Amodel(models.Model):
consult_id = models.IntegerField(primary_key=True) # number start from 100,000
....
Bmodel(models.Model):
note_id = models.IntegerField(primary_key=True) # number start from 1
....
Cmodel(models.Model):
consult_note_id = models.IntegerField(primary_key=True) # saved 'consult_id from Amodel' and 'note_id from Bmodel' with unique property.
...
what_is = models.CharField(max_length=7, ...) # saved 'consult' for consult table's data and 'note' for note table's data
Я пытается заменить этот consult_note_id в Cmodel на OneToOneField для более плавного использования ORM.
Ожидаемый код ниже.
Cmodel(models.Model):
consult_note_id = models.OneToOneField(Amodel or Bmodel, on_delete=models.SET_NULL, null=True, blank=True, db_column='consult_note_id')
...
what_is = models.CharField(max_length=7, ...)
Ожидаемый сериализованный результат
{consult_note_id : 100001, ..., what_is : consult},
{consult_note_id : 1, ..., what_is : note},
{consult_note_id : 100002, ..., what_is : consult},
{consult_note_id : 100003, ..., what_is : consult},
{consult_note_id : 2, ..., what_is : note},
{consult_note_id : 3, ..., what_is : note},
{consult_note_id : 100004, ..., what_is : consult}
Есть ли хороший способ?