【发布时间】:2014-10-04 14:24:31
【问题描述】:
今天偶然发现了一件很奇怪的事情。
我创建了一个可以显示问题的最小项目/应用程序。我就是这样做的:
virtualenv venv
. ./ven/bin/activate
pip install django==1.6 # That's the one we're using
django-admin.py startproject bla
cd bla
chmod +x manage.py
./manage.py startapp bla_app
在bla/settings.py:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'bla_app',
)
AUTH_USER_MODEL = 'bla_app.MyUser'
在bla_app/models.py:
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class MyUser(AbstractUser):
super_name = models.CharField(max_length=254, unique=True)
然后,我运行syncdb 命令:
./manage.py syncdb
它已按预期创建。
现在是棘手的部分。如果我将 models.py 替换为名为 models 的文件夹,并创建一个 __init__.py 文件,其中包含:
from my_user import MyUser
(之前的models.py 被移动到models/ 为my_user.py)
然后我得到这些错误:
$ ./manage.py syncdb
CommandError: One or more models did not validate:
admin.logentry: 'user' has a relation with model bla_app.MyUser, which has either not been installed or is abstract.
auth.user: Model has been swapped out for 'bla_app.MyUser' which has not been installed or is abstract.
你知道这里发生了什么吗?
我找到了that,但我不确定它们是否相关
【问题讨论】:
-
不支持模型到子模块的分区(仅适用于模型)因为 django 的工作方式,这将在 1.7 中改变:code.djangoproject.com/ticket/4470 最后检查如何执行的“技巧”那个。
标签: python django django-models python-import