Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как разделить models.py на несколько файлов без конфликта [RSS Feed]

#1 Март 30, 2016 14:38:00

Hakman
Зарегистрирован: 2016-01-21
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как разделить models.py на несколько файлов без конфликта

Есть один большой файлик models.py с кучей классов внутри, хочу разделить его на несколько файлов в поддиректорию /models
Текущая стуктура проекта:

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
| | ├── __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).

В models/init.py

# -*- coding: utf-8 -*-
from account import *
from blabla import *

В settings:
AUTH_USER_MODEL = 'members.Account'

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',
]

PROJECT_APPS = [
'core',
'members',
]

INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + PROJECT_APPS

Все классы в моделях имеют 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’>.

Исходя из ошибки, подозреваю что идёт двойной импорт.
Может подскажет кто, как можно этого избежать?

Офлайн

#2 Март 31, 2016 01:42:10

Hakman
Зарегистрирован: 2016-01-21
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как разделить models.py на несколько файлов без конфликта

Если кому интересно, проблема решена путём выноса всего, что относится к allauth в отдельное app.
Это позволило избежать double import trap и в итоге разбить файл members/models.py на отдельные в поддире models/

Соответственно в сеттингах изменилось

AUTH_USER_MODEL = 'acc.Account'

и добавилось
PROJECT_APPS = [
'acc',
'core',
'members',
]

Офлайн

#3 Март 31, 2016 08:38:38

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Как разделить models.py на несколько файлов без конфликта

Hakman
Если кому интересно, проблема решена путём выноса всего, что относится к allauth в отдельное app.Это позволило избежать double import trap и в итоге разбить файл members/models.py на отдельные в поддире models/Соответственно в сеттингах изменилось

Хех, я думал, что нужно край разделить модели одного приложения и поэтому не стал давать столь очевидный совет)



Отредактировано plusplus (Март 31, 2016 08:39:03)

Офлайн

#4 Апрель 16, 2016 03:46:36

mirak
Зарегистрирован: 2016-02-24
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как разделить models.py на несколько файлов без конфликта

Извините за оффтоп, но как вы делаете такой текстовый граф структуры папок и файлов?

Офлайн

#5 Апрель 16, 2016 10:48:40

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Как разделить models.py на несколько файлов без конфликта

mirak
Предполагаю, используется утилита tree

Офлайн

  • Начало
  • » Django
  • » Как разделить models.py на несколько файлов без конфликта[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version