如何拆分 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 运行时错误。