我假设这是因为我的超级用户依赖于没有现有数据的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
| 归档时间: |
|
| 查看次数: |
36609 次 |
| 最近记录: |