Создайте абстрактную дочернюю модель 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

Вернуться на верх