扩展 Django 用户模型

发布于 2024-11-13 20:22:32 字数 726 浏览 6 评论 0原文

我正在 django 中扩展 User 对象并拥有用户配置文件。因此,使用 post_save 钩子,我通过以下方式保存用户配置文件:

class UserProfile(models.Model):
    user = models.OneToOneField(User)

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

post_save.connect(create_user_profile, sender=User)

当我通过 python manage.py shell 运行 shell 时,它工作正常;在表中保存用户对象和用户配置文件,但如果我通过启动请求进行测试,在处理该请求的views.py中,我会执行以下操作

def handleRequest(request):
    user = User(username="test",email="test",password="test")

    user.save()

当然,我创建了一个 HttpResponse 并返回了一个响应,但为了简洁而省略了它。结果是我得到一个保存在 auth_user 中的用户条目,但没有用户配置文件。什么事?请帮忙。

I am extending the User object in django and have a user profile. So using the post_save hook I save a user profile in the following way:

class UserProfile(models.Model):
    user = models.OneToOneField(User)

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

post_save.connect(create_user_profile, sender=User)

It works fine when I run the shell, via python manage.py shell; saving a user object and user profile in the tables but if I test by launching a request, in the views.py that handles that request I do the following

def handleRequest(request):
    user = User(username="test",email="test",password="test")

    user.save()

Of course I created a HttpResponse and returned a response as well but omitted it for brevity. The results are i get a User entry saved in auth_user but no user profile. What the dealy? Please help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

做个ˇ局外人 2024-11-20 20:22:32

无法访问用户配置文件,因为您在用户配置文件中已经存在关系。

你需要添加字段。

class UserProfile(models.Model):
    url = models.URLField()
    home_address = models.TextField()
    phone_numer = models.PhoneNumberField()
    user = models.ForeignKey(User, unique=True)

有关更多信息,请检查以下链接

http ://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/

can not access the user profile, because you have in the user profile is a relationship.

you need add fields.

class UserProfile(models.Model):
    url = models.URLField()
    home_address = models.TextField()
    phone_numer = models.PhoneNumberField()
    user = models.ForeignKey(User, unique=True)

for more information check the following link

http://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文