2014-04-13 37 views
11

我一直在使用[django-registration](https://bitbucket.org/ubernostrum/django-registration),現在我已經開始使用django 1.7b1,這裏是錯誤,我得到了下面複製的錯誤。它正在從Django的註冊提出在models.py與Django的Django註冊兼容性問題1.7

try: 
    from django.contrib.auth import get_user_model 
    User = get_user_model() 
except ImportError: 
    from django.contrib.auth.models import User 

,似乎它正在升起,因爲get_user_model()被調用之前應用註冊表已準備就緒。我不確定這是否兼容性問題,如果是,是否有一個簡單的解決方法?如果不是,你能幫我確定我做錯了什麼嗎?

RuntimeError: App registry isn't ready yet. 
File "/Users/nima/pe-dev/manage.py", line 9, in <module> 
    execute_from_command_line(sys.argv) 
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/core/management/__init__.py", line 427, in execute_from_command_line 
    utility.execute() 
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/core/management/__init__.py", line 391, in execute 
    django.setup() 
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/__init__.py", line 21, in setup 
    apps.populate(settings.INSTALLED_APPS) 
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/apps/registry.py", line 106, in populate 
    app_config.import_models(all_models) 
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/apps/config.py", line 190, in import_models 
    self.models_module = import_module(models_module_name) 
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
File "/Library/Python/2.7/site-packages/registration/models.py", line 15, in <module> 
    User = get_user_model() 
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/contrib/auth/__init__.py", line 136, in get_user_model 
    return django_apps.get_model(settings.AUTH_USER_MODEL) 
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/apps/registry.py", line 187, in get_model 
    self.check_ready() 
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/apps/registry.py", line 119, in check_ready 
    raise RuntimeError("App registry isn't ready yet.") 

回答

25

請勿使用PyPI提供的django註冊。它不支持Django 1.7,它似乎永遠不會。回購維護者已退位,該項目似乎無人維護。

有Github上提供維護叉已在Django 1.7行之有效對我來說:

https://github.com/macropin/django-registration

這可以從PyPI將作爲Django的註冊 - 終極版。

https://pypi.python.org/pypi/django-registration-redux/

您可以安裝使用PIP:

pip install django-registration-redux

+0

您先生 - 和github用戶macropin - 救了我。 –

+1

它的點子:pip安裝django-registration-redux –

+1

感謝提示@VisgeanSkeloru。我已經更新了答案,以反映更簡單的安裝過程。 – ptevans

2

This note解決您的問題。

我想導入用戶的首選方法是:

from django.conf import settings 
User = settings.AUTH_USER_MODEL 

編輯:

貌似這個問題已經注意到,但項目管理是難以大約進行更改。 link。這是Django 1.7更新中的一個更大的問題。

我會說你可以:(1)分叉回購並自己做出更改,或者(2)在pip安裝後在你的站點包文件夾中進行更改。如果您將其推送到另一臺服務器並使用requirements.txt進行安裝,後一版本將無法正常工作。請注意,如果您使用requirements.txt執行選項1,則需要將其指向您的repo而不是Django註冊。

+0

這正是我想太多。問題在於,我在導入時並未在代碼中調用'get_user_model()',它正在[django-registration]中調用(https://bitbucket.org/ubernostrum/django-registration/src/8f242e35ef7c004e035e54b4bb093c32bf77c29f /registration/models.py?at=default#cl-15)應用程序。那麼這是否意味着django-registration與1.7b不兼容? – Nima

+0

是啊,似乎回購所有者不再維護它,這是一個恥辱。我不確定這裏有什麼正確的解決方案。我不認爲'User = settings.AUTH_USER_MODEL'會完成這項工作,因爲'settings.AUTH_USER_MODEL'返回一個字符串並且使用'get_model()'來獲得實際的模型類在這裏是不可能的。 – Nima

+0

如果您剛剛刪除了get_user_model()部件並導入了用戶,該怎麼辦?目前看起來像這樣: '嘗試:from django.contrib.auth import get_user_model User = get_user_model() ',除了ImportError: from django.contrib.auth。模型導入用戶' 如果刪除前四行: 'from django.contrib.auth.models import User' – Alex