Django:在Python Shell中访问管理员用户

11

我正在使用Django Userena,但是在尝试登录到Django管理界面时,Userena会出现问题:Profile matching query does not exist

我该如何在shell中为管理员用户创建个人资料?这是我的Profile模型,但我不知道如何访问管理员用户的密钥以为其创建一个Profile对象:

class Profile(UserenaBaseProfile, FacebookProfileModel):
    user = models.OneToOneField(User,
                                unique=True,
                                verbose_name=('user'),
                                related_name='my_profile')
    website = models.URLField(null=True, blank=True)

我知道这可能很简单,但是谷歌到目前为止没有给我答案...感谢你的想法!

PS. 我曾经能够无问题地登录到我的管理界面,但现在出现了一个错误:Profile matching query does not exist(我也没有改变过代码).. 有没有任何想法为什么我现在无法登录都会被感激。谢谢!

1个回答

29

你可以像这样做:

$ ./manage.py shell
> from django.contrib.auth.models import User
> from <profile_package>.models import Profile
> user = User.objects.get(username='<admin_user_name>')
> profile = Profile(user=user)
> profile.save()

1
请注意,自Django 1.9起,此方法已被弃用:使用此方法将会得到AttributeError: Manager isn't available; 'auth.User' has been swapped for 'user.User'。请改用以下方法:from django.apps import apps User = apps.get_model('user', 'User'),然后继续进行操作。 - Zargold
这对于在已有用户的网站上创建夹层配置文件时也非常有帮助。 - mightypile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接