无法创建超级用户Django

use*_*282 16 django

我假设这是因为我的超级用户依赖于没有现有数据的UserProfile.我的模型看起来像

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save

class UserProfile(models.Model):
    user = models.OneToOneField(User) # required
    location = models.CharField(max_length=100)
    age = models.PositiveIntegerField(blank=True,null=True)
    contribution_points = models.PositiveIntegerField()
    #acheivements = models.ManyToMany()

def create_user_profile(sender,instance,created,**kwargs):
    if created:
        UserProfile.objects.create(user=instance)

post_save.connect(create_user_profile, sender=User)
Run Code Online (Sandbox Code Playgroud)

但是,我最终得到以下错误:

django.db.utils.DatabaseError: (1146, "Table 'savory_db.login_userprofile' doesn't exist")
Run Code Online (Sandbox Code Playgroud)

尽管刚跑了 syncdb

我的模型是否有任何可能导致此错误的矛盾字段.UserProfile应该不适用于超级用户吗?我应该如何防止这种情况?

use*_*282 27

2011年3月23日凌晨4点25分,Malcolm Box写道:

进一步调查:看起来它是南/ syncdb交互.该用户配置将由南方迁徙来创建,当然,当AUTH post_install运行,以提示输入超级用户还没有运行.

可悲的是syncdb --migrate也没做正确的事.

现在,我只是使用./manage.py shell手动创建一个超级用户,但欢迎任何关于如何更好地解决这个问题的想法.

不要在syncdb期间创建超级用户,您的用户配置文件表将不存在.您必须在admin上创建一个创建用户配置文件的创建信号,这看起来像是失败了

您要用来初始化数据库的过程是:

python manage.py syncdb --noinput
python manage.py migrate
python manage.py createsuperuser
Run Code Online (Sandbox Code Playgroud)

参考:https://groups.google.com/forum/?fromgroups =#!topic/django- users/sBXllxrIdMc

  • 为了将来参考,如果你运行`syncdb --all`,即使是通常通过南方创建的东西也应该创建表.另外,如果你在南方管理一些东西,用syncdb管理一些东西,那么在你的初始问题中提到这将是一件有用的事情:) (3认同)