tej*_*rss 6 django django-south django-1.5
我有许多应用程序具有历史性的南初始迁移,我想将其转换为django 1.5适用.所以我用自定义文件换出了迁移文件中的所有orm ['auth.User']引用,但是当我尝试运行这些迁移时,我得到以下错误:
迁移错误:django_notify:0001_initial KeyError:"此迁移中无法使用应用程序'配置文件'中的模型'customuser'."
有问题的迁移是这样的:http: //bpaste.net/show/2CwaYrlNifNTd5gcHUfK/
我的自定义User类是:
class CustomUser(AbstractUser):
image = models.ImageField(_('Image Field'), upload_to='user_images')
Run Code Online (Sandbox Code Playgroud)
我也无法使用convert_to_south命令将my'profiles'应用程序转换为南方.我收到以下错误:
在'/ Users/tejinder/Projects/basidia/apps/profiles/migrations'中创建init .py ...
添加了模型profiles.CustomUser
在profiles.CustomUser上为组添加了M2M表
在profiles.CustomUser上为user_permissions添加了M2M表
创建0001_initial.py.您现在可以将此迁移应用于:./ manage.py迁移配置文件
CommandError:一个或多个模型没有验证:auth.user:模型已被换出'profiles.CustomUser',它尚未安装或是抽象的.
可能出了什么问题?提前致谢.
小智 12
请参阅以下答案:将现有的auth.User数据迁移到新的Django 1.5自定义用户模型?
对于从自定义用户模型开始可能有类似问题的其他人:
如果您使用的是"django.contrib.auth"且拥有自定义用户模型,则无法在未安装的应用程序中包含自定义用户模型的情况下运行syncdb.你会收到这个错误
CommandError:一个或多个模型没有验证:auth.user:模型已被换出'myapp.User',它尚未安装或是抽象的.admin.logentry:'user'与模型myapp.User有关系,该模型未安装或是抽象的.
因此,要解决此问题,您需要在已安装的应用程序中包含包含用户模型的应用程序,现在运行syncdb时,它将为您自己的模型添加所有表格.因此,您必须将应用程序转换为南,因为表已经创建.
python manage.py syncdb
python manage.py migrate
python manage.py convert_to_south myapp
Run Code Online (Sandbox Code Playgroud)
这将创建0001_initial并且您收到此错误:
CommandError:一个或多个模型没有验证:auth.user:模型已被换出'myapp.User',它尚未安装或是抽象的.
解决方法:
python manage.py syncdb
python manage.py migrate
python manage.py convert_to_south myapp
python manage.py migrate myapp 0001 --fake
Run Code Online (Sandbox Code Playgroud)
您将仍然获得当您运行convert_to_south上述错误,但你可以忽略它.在南文档说:
convert_to_south:South将自动制作并假装应用您的第一次迁移
我认为问题在于模型验证导致convert_to_south在假装(--fake)应用您的第一次迁移之前出错.
因此,解决方法是基本上执行跳过的虚假迁移.
| 归档时间: |
|
| 查看次数: |
4442 次 |
| 最近记录: |