Могу ли я разделить модели в разных файлах в django
В настоящее время все мои модели находятся в models.py - ... Это становится очень грязным.
Могу ли я иметь отдельный файл, например base_models.py Так что я поставил свои основные модели, которые я не хочу трогать
также тот же случай для просмотров и поместить в отдельную папку, а не разрабатывать новое приложение
4 ответов
Да, это выполнимо. Это не особенно красиво, хотя:
сделайте модели модулем, чтобы ваша структура каталогов выглядела так:
- models
|- __init__.py
|- some_model.py
|- some_other_model.py
|- ...
теперь, магия лежит в __init__.py и некоторые небольшие дополнения в моделях. __init__.py:
from some_model import SomeModel
from some_other_model import SomeOtherModel
__all__ = [ 
    'SomeModel',
    'SomeOtherModel',
]
some_model.py:
class SomeModel(models.Model):
    class Meta(object):
        app_label = 'yourapplabel'
        db_table = 'yourapplabel_somemodel'
все, что сказал acjohnson55, плюс тот факт, что вам нужно указать атрибут app_label в мета-классе каждой модели.
ссылка на фактический пример на github: https://github.com/stefanfoulis/django-filer/tree/develop/filer/models
вы можете разделить файл модели такой :
------- модели!--1--> 
-------------- init.py 
-------------- usermodels.py 
--------------othermodel.py
в init.py:
--------------- из usermodels import*
---------------от othermodel импорт * 
и в *models.py , добавить мета-класс:
--------класс мета: 
-------------- app_label = 'appName'
да, просто сделайте папку под названием models и в этой папке поместите все ваши отдельные файлы модели.  Вам нужно поместить файл под названием __init__.py на models папка для него, чтобы считаться models модуль.  В __init__.py используйте from ... import ... чтобы поместить имена, которые вы хотите доступны непосредственно в yourapp.models, в противном случае вам придется импортировать их как yourapp.models.base_model, или любое имя подмодуля, которое вы используете.
кроме того, в каждой модели вам нужно будет добавить мета-атрибут под названием app_label = 'yourapp' чтобы убедиться, что ваши модели распознаются как часть приложения.
