Создайте абстрактную дочернюю модель Django, ссылающуюся на таблицу родительской модели
У меня есть модель (Parent
), которая имеет таблицу в базе данных (таблица app1_parent
) в первом приложении (app1
).
В другом приложении (app2
) я хотел бы добавить функциональность к этой модели Parent
, но по-прежнему ссылаться на существующую таблицу Parent
(таблица app1_parent
), которая является частью другого приложения (app1
).
Если я создаю в app2
модель Child
, которая просто наследуется от Parent
, то в итоге я получаю две разные таблицы: app1_parent
и app2_child
Я хотел бы узнать, могу ли я создать (абстрактную ?) дочернюю модель (Child
), которая ссылается на таблицу модели Parent
, без добавления дополнительного поля, но добавляя новые методы и свойства.
(По сути, я хочу сделать противоположное тому, для чего были созданы абстрактные таблицы)
class Parent(models.Model):
my_field = models.CharField(max_length=255)
class Child(Parent):
def my_method(self):
return 'done'
class Meta:
abstract = True
Есть ли другой способ достичь моего результата?
PS: конечно, целью было бы не изменять app1.Parent
модель и app1.parent
таблицу
OK, я наконец-то нашел решение своего собственного ответа: использование прокси-моделей Django для достижения однотабличного наследования:
class Child(Parent):
def my_method(self):
return 'done'
class Meta:
proxy= True
Очень хороший ответ о том, как расширить однотабличное наследование, чтобы дочерние модели были определены как "отличные" от родительской модели, и между ними: https://stackoverflow.com/a/60894618/12505071