2015-01-27 2 views
0

У меня есть одно приложение и одна модель. Я хочу разделить модель на два приложения, чтобы пользователь управлялся из отдельного приложения. Передача этой модели сделает трюк? Что мне нужно сделать?Как отделить модель от двух приложений

class User(AbstractUser): 

    country = models.CharField(max_length=2, choices=COUNTRY, default=RUSSIA) 

Вот мой models.py - должно быть отделено

RUSSIA = 'RUS' 
USA = 'USA' 
GERMANY = 'GER' 


COUNTRY = (
    (RUSSIA, "Russia"), 
    (USA, "USA"), 
    (GERMANY, "Germany"), 
) 

class User(AbstractUser): 

    country = models.CharField(max_length=2, choices=COUNTRY, default=RUSSIA) 


class Country(models.Model): 

    country = models.CharField(max_length=3, choices=COUNTRY, default=RUSSIA) 
    name_of_team = models.CharField(max_length=255, blank=True, null=True) 

    def __unicode__(self): 
     return self.name_of_team 
+0

Вы хотите иметь два приложения с двумя моделями (один для пользователя и один для countr у)? – Andres

+0

@ Andres У меня есть одно приложение с двумя моделями. Я хочу иметь два отдельных приложения и модель первых приложений между этими приложениями. – user2962768

ответ

0

Вы можете создать два приложения, один для пользователей и для стран. Затем поместите модель User в приложение «Пользователи» и модель «Страна» в приложении «Страны».

Тогда в третьем приложении вы можете импортировать и как вам нужны:

from countries.models import Country 
from users.models import User 

Поместите эту часть кода в файле settings.py:

RUSSIA = 'RUS' 
USA = 'USA' 
GERMANY = 'GER' 


COUNTRY = (
    (RUSSIA, "Russia"), 
    (USA, "USA"), 
    (GERMANY, "Germany"), 
) 

Если вы сделаете это, то вы можете получить доступ к константам из обоих приложений:

from django.conf import settings 

settings.COUNTRY 
+0

Спасибо :) скажите, пожалуйста, как создать несколько приложений для Миграция базы данных? Когда выполняется python manage.py makemigrations my_new_app, я получаю сообщение об ошибке: «LookupError: приложение« my_new_app »не имеет модели пользователя.» – user2962768

+0

Взгляните на это сообщение в блоге: http: // django- authtools.readthedocs.org/en/latest/how-to/migrate-to-a-custom-user-model.html – sc3w

+0

Большое спасибо :) – user2962768

0

Вы можете создать два приложения, один для пользователей и для стран, то вы просто импортировать модель страны в модели пользователя.

Кроме того, если вы хотите сохранить отношения между странами и пользователем, вы должны использовать ForeignKey. Извините, если это не соответствует вашей логике, но я не уверен, как ваши модели должны выглядеть, это немного отчуждает меня.

Что-то вроде этого:

страна/models.py

RUSSIA = 'RUS' 
USA = 'USA' 
GERMANY = 'GER' 

COUNTRY = (
    (RUSSIA, "Russia"), 
    (USA, "USA"), 
    (GERMANY, "Germany"), 
) 


class Country(models.Model): 
    # I don't know why country attr in Country class 
    country = models.CharField(max_length=3, choices=COUNTRY, default=RUSSIA) 
    name_of_team = models.CharField(max_length=255, blank=True, null=True) 

    def __unicode__(self): 
     return self.name_of_team 

пользователя/models.py

from country.models import Country 

class User(AbstractUser): 
    # ForeignKey, here you make the relation with country model 
    country = models.ForeignKey(Country) 
+0

Когда я хочу сделать python manage.py makemigration my_new_app, я получаю сообщение об ошибке: ImportError: Нет модуля с именем my_new_app.models - Я делаю импорт в своих моделях со страной – user2962768

+0

, что вы используете для вашего имени приложения? замените my_new_app на ваше имя приложения – Andres

+0

ОК, сейчас все в порядке, но, пожалуйста, скажите, как после создания нескольких приложений для миграции базы данных? когда выполняется python manage.py makemigrations my_new_app, я получаю сообщение об ошибке: «LookupError: приложение« my_new_app »не имеет модели пользователя. – user2962768

Смежные вопросы