2016-07-28 2 views
1

Django 1.9.7 Я использую pyenv virtualenv autoenvLookupError: «пользователи» приложение не имеет модель «пользователя»

Я хочу расширить пользовательскую модель так, я решил использовать AbstractUser

(AbstractUser-х class META абстрактные = True, так что я не могу сделать таблицу, но наследование классов может сделать таблицу, верно ??)

любом случае

(ВЭФ название проекта) Я делаю приложение wef/users/models/__init__.py

from .user import User 

В wef/users/models/user.py

from django.contrib.auth.models import AbstractUser 

from django.db import models 


class User(AbstractUser): 

    phonenumber = models.CharField(
      max_length = 11, 
      blank = True, 
      null = True 
      ) 

и добавить users приложение в settings.py

INSTALLED_APPS = [ 
    [...] 
    'users', 
] 

AUTH_USER_MODEL = 'users.User' 

Так что, я думаю, когда я makemigrations, мигрировать

Джанго делают модель таблица о пользователе ...

python wef/manage.py makemigrations users

он показывает ошибку

Traceback (most recent call last): 
    File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/apps/config.py", line 163, in get_model 
return self.models[model_name.lower()] 
KeyError: 'user' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
execute_from_command_line(sys.argv) 
    File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line 
utility.execute() 
    File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/core/management/__init__.py", line 345, in execute 
self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/core/management/base.py", line 348, in run_from_argv 
self.execute(*args, **cmd_options) 
    File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/core/management/base.py", line 398, in execute 
self.check() 
    File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/core/management/base.py", line 426, in check 
include_deployment_checks=include_deployment_checks, 
    File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/core/checks/registry.py", line 75, in run_checks 
new_errors = check(app_configs=app_configs) 
    File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/contrib/auth/checks.py", line 12, in check_user_model 
cls = apps.get_model(settings.AUTH_USER_MODEL) 
    File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/apps/registry.py", line 197, in get_model 
return self.get_app_config(app_label).get_model(model_name.lower()) 
    File "/Users/hanminsoo/.pyenv/versions/study_alone/lib/python3.5/site-packages/django/apps/config.py", line 166, in get_model 
"App '%s' doesn't have a '%s' model." % (self.label, model_name)) 
LookupError: App 'users' doesn't have a 'user' model. 

Я не могу понять, почему Джанго не нашел users.User модель

и при изменении `AUTH_USER_MODEL = UserAAA»

он показывает ошибку (заглавные буквы заменяются в нижнем регистре)

LookupError: App 'users' doesn't have a 'useraaa' model.

Я не могу найти мою проблему пожалуйста, кто-нибудь мне помочь .. ㅠ _ ㅠ

+2

Является ли ваш пакет действительно «режимы», а не «модели»? –

+0

oh извините, отредактируйте мою ошибку, но у нее такая же ошибка –

+0

, пожалуйста, помогите мне. Мне действительно нужна чья-то помощь. –

ответ

3

Я думаю, что вы уже создали схему базы данных. Из документации Django:

Changing AUTH_USER_MODEL has a big effect on your database structure. It changes the tables that are available, and it will affect the construction of foreign keys and many-to-many relationships. If you intend to set AUTH_USER_MODEL, you should set it before creating any migrations or running manage.py migrate for the first time.

Changing this setting after you have tables created is not supported by makemigrations and will result in you having to manually fix your schema, port your data from the old user table, and possibly manually reapply some migrations.

+0

спасибо @Gupta. Я попробую удалить db.sqlite3 и 'manage.py reset_db' –

+1

Вам пришлось решить мою проблему , Спасибо!!! Спасибо!! очень!! –

+1

У меня такая же проблема, но я всегда пользовался этой пользовательской моделью. Я просто перешел от 'models.py' к' models/__ init __. Py' Что может быть проблемой в этом случае? –

1

У меня есть еще несколько вариантов решения этой проблемы.

  1. Если вы действительно хотите перейти от в contrib.auth

Поместите db_table = 'auth_user' в Meta вашей модели, чтобы использовать существующую таблицу и не нарушать другие отношения. Сделайте миграцию без каких-либо настраиваемых полей, затем внесите изменения в модель и другую миграцию.

  1. Я переехал по моим моделям.py к моделям/init.ру

В этом случае мне нужно было from .user import User перед импортом любые другие модели, которые называются get_user_model()

+0

Миллион спасибо за пункт №1, дорогой интернет-незнакомец. – Chase

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