如何拆分 models.py 以分离文件 w/o Django 中的双重导入陷阱
How to split models.py to serapate files w/o double import trap in Django
我有一个大文件 models.py,里面有很多 类,我想拆分为模型子目录中的单独文件。我当前项目的结构是:
project
├── core
| ├── settings
| | └── base.py
| ├── __init__.py
| ├── urls.py
| ├── models.py
| ├── views.py
| └── wsgi.py
├── members
| ├── migrations
| ├── templates
| ├── __init__.py
| ├── forms.py
| ├── models.py
| ├── urls.py
| └── views.py
├── templates
| ├── pages
| | └── register.html
| └── base.html
└── manage.py
我正在尝试将 members/models.py 拆分为扩展结构,例如:
├── members
| ├── models
| | ├── __init__.py
| | ├── account.py
| | └── blabla.py
| ├── migrations
| ├── templates
| ├── __init__.py
| ├── forms.py
| ├── urls.py
| └── views.py
Python 2.7、Django 1.9 和 django-allauth 在船上所以在 account.py 我有 2 类:
class MyUserManager(UserManager)
和 class Account(AbstractBaseUser, PermissionsMixin)
.
模型中/init.py
# -*- coding: utf-8 -*-
from account import *
from blabla import *
在设置中AUTH_USER_MODEL = 'members.Account'
模型中的所有 类 都有 app_label = 'members'
.
members/__init__.py
为空
我遇到了这个问题:
RuntimeError: Conflicting 'account_groups' models in application 'members':
<class 'members.models.account.Account_groups'> and <class 'models.account.Account_groups'>.
有什么办法可以避免吗?
谢谢。
已添加:
DJANGO_APPS = [
'django.contrib.auth',
'django.contrib.sites',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
THIRD_PARTY_APPS = [
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.facebook',
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.twitter',
'allauth.socialaccount.providers.vk',
'django_migration_fixture',
'widget_tweaks',
'tz_detect',
]
PROJECT_APPS = [
'core',
'admin',
'members',
]
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + PROJECT_APPS
嗯,我认为这个问题与 allauth 内部模型有关。
我修复了它,只是创建了一个名为 acc
的新应用程序,并在此应用程序中将 allauth 类 插入到 models.py。
现在在设置中:
AUTH_USER_MODEL = 'acc.Account'
PROJECT_APPS = [
'acc',
'core',
'admin',
'members',
]
现在我可以使用单独的文件将 models.py 从成员拆分到模型子目录,并且效果很好 w/o 运行时错误。
我有一个大文件 models.py,里面有很多 类,我想拆分为模型子目录中的单独文件。我当前项目的结构是:
project
├── core
| ├── settings
| | └── base.py
| ├── __init__.py
| ├── urls.py
| ├── models.py
| ├── views.py
| └── wsgi.py
├── members
| ├── migrations
| ├── templates
| ├── __init__.py
| ├── forms.py
| ├── models.py
| ├── urls.py
| └── views.py
├── templates
| ├── pages
| | └── register.html
| └── base.html
└── manage.py
我正在尝试将 members/models.py 拆分为扩展结构,例如:
├── members
| ├── models
| | ├── __init__.py
| | ├── account.py
| | └── blabla.py
| ├── migrations
| ├── templates
| ├── __init__.py
| ├── forms.py
| ├── urls.py
| └── views.py
Python 2.7、Django 1.9 和 django-allauth 在船上所以在 account.py 我有 2 类:
class MyUserManager(UserManager)
和 class Account(AbstractBaseUser, PermissionsMixin)
.
模型中/init.py
# -*- coding: utf-8 -*-
from account import *
from blabla import *
在设置中AUTH_USER_MODEL = 'members.Account'
模型中的所有 类 都有 app_label = 'members'
.
members/__init__.py
为空
我遇到了这个问题:
RuntimeError: Conflicting 'account_groups' models in application 'members':
<class 'members.models.account.Account_groups'> and <class 'models.account.Account_groups'>.
有什么办法可以避免吗?
谢谢。
已添加:
DJANGO_APPS = [
'django.contrib.auth',
'django.contrib.sites',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
THIRD_PARTY_APPS = [
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.facebook',
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.twitter',
'allauth.socialaccount.providers.vk',
'django_migration_fixture',
'widget_tweaks',
'tz_detect',
]
PROJECT_APPS = [
'core',
'admin',
'members',
]
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + PROJECT_APPS
嗯,我认为这个问题与 allauth 内部模型有关。
我修复了它,只是创建了一个名为 acc
的新应用程序,并在此应用程序中将 allauth 类 插入到 models.py。
现在在设置中:
AUTH_USER_MODEL = 'acc.Account'
PROJECT_APPS = [
'acc',
'core',
'admin',
'members',
]
现在我可以使用单独的文件将 models.py 从成员拆分到模型子目录,并且效果很好 w/o 运行时错误。