Разделение объявления модели между несколькими приложениями в Django

Я работаю и создаю свой сайт на Django и столкнулся с этой логической проблемой.

Мой проект состоит из нескольких приложений.

Я хочу объявить в каждой из них "кусочек" большей модели, которая будет представлена в одной единственной таблице. Пример:

  • model Person
  • model DetailsPerson

Поскольку каждое отдельное приложение определяет конкретную часть человека, моя идея заключалась в децентрализации объявления модели DetailsPerson таким образом, чтобы они фигурировали в одной таблице, но каждое приложение увеличивало поля, необходимые приложению для работы.

Возможно ли это?

Вы можете использовать наследование классов, например

class Person(models.Model):
    (fields)

# in other file, import this class an inherit
class DetailsPerson(Person):
    (add. fields)

Другой вариант - использовать отношения one-to-one.

class Person(models.Model):
    (fields)

# in other file, import this class and do 
class DetailsPerson(models.Model):
    person = models.OneToOneField(Person, on_delete=models.CASCADE)
    (additional fields)

В случае добавления деталей в класс Person, я бы предпочел второй вариант.

А если вы хотите иметь несколько различных классов Detail для одного Person, используйте ForeignKey:

class DetailsPerson1(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    (additional fields)

class DetailsPerson2(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    (additional fields)
Вернуться на верх