Я пытаюсь создать сопоставление Django ORM, совместимое с существующей моделью данных , поэтому я пытаюсь работать с существующим набором имен таблиц и столбцов.
У меня сложилась ситуация наследования нескольких таблиц, когда класс InformationObject наследуется от класса Object. Я хотел бы позволить Django справиться с этим обычным способом:
class Object(models.Model):
class Meta:
db_table = "object"
class InformationObject(Object):
class Meta:
db_table = "information_object"
В этом случае Django автоматически создает однозначное поле в модели наследования с именем object_ptr_id . Однако в схеме, которую я вынужден использовать, ссылка на объект просто называется «id». Итак:
Есть ли способ как-то указать имя столбца, который Django автоматически использует для наследования нескольких таблиц?
Альтернатива, которую мне придется использовать в противном случае, состоит в том, чтобы использовать явное поле «один к одному», но тогда я не смогу унаследовать не относящиеся к базе данных методы из объектной модели:
class Object(models.Model):
class Meta:
db_table = "object"
class InformationObject(models.Model):
class Meta:
db_table = "information_object"
id = models.OneToOneField(Object, primary_key=True, db_column="id")
Есть идеи? Может быть, я мог бы создать общий базовый класс для них обоих и поместить туда не-db методы ...?