В какой части Django следует создавать общую абстрактную модель?

Где следует разместить файл models.py с общей абстрактной моделью в моем проекте с двумя различными приложениями (app1, app2)? Стоит ли использовать параметр abstract = True в классе Мета для создания общей модели с идентичными полями в обоих приложениях? Мои соображения касательно удобочитаемости и структуры проекта. У нас нет общих правил в команде, так как я работаю над проектом один.
  • 3 октября 2023 г. 14:57
Ответы на вопрос 2
Общая абстрактная модель лучше всего разместить в отдельном приложении, которое будет содержать общую функциональность для всех приложений в проекте. Это приложение может быть названо, например, "common" или "shared".

В данном случае, файл models.py с общей абстрактной моделью следует разместить в директории этого отдельного приложения, например:
```
common/
    models.py
    ...
```

Использование параметра `abstract=True` в классе `Meta` поможет создать общую абстрактную модель с идентичными полями в обоих приложениях, что является хорошим подходом, особенно если поля и их связи в обоих приложениях одинаковы. 

Представьте, что у нас есть два приложения app1 и app2, и мы хотим создать общую абстрактную модель с полями "name" и "description". Вот пример:

```python
from django.db import models

class CommonModel(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()

    class Meta:
        abstract = True
```

Теперь вы можете наследоваться от `CommonModel` в моделях ваших приложений app1 и app2:

```python
from django.db import models
from common.models import CommonModel

class App1Model(CommonModel):
    # дополнительные поля и методы

class App2Model(CommonModel):
    # дополнительные поля и методы
```

Такой подход поможет сохранить удобочитаемость и структуру проекта, а также избежать дублирования кода, если в будущем потребуется добавить или изменить поля в общей модели.
Можно создать приложение common, где будут храниться общие модели и различные компоненты.
Похожие вопросы