扩展Django用户模型

问题描述:

我扩展Django的用户对象,并有一个用户配置文件。因此,使用post_save钩我保存在以下方式用户配置文件:扩展Django用户模型

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) 

当我运行shell,通过Python manage.py壳,它工作正常;保存表中的一个用户对象和用户配置文件,但如果我通过推出一个请求来测试,在处理该请求的views.py我下面

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

    user.save() 

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

+0

你看着[Django的配置文件(https://bitbucket.org/ubernostrum/django-profiles)? – john2x 2011-06-04 16:05:21

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

您需要添加字段。

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/

+0

是的,我已经看过那林,它不会一直工作。我将再次进行调查并尝试。我在网上看到了很多关于如何扩展用户模型的链接......但是他们都遇到了问题。与此同时,我不再使用post_save钩子,只是在视图文件中的请求处理程序方法中手动创建用户配置文件对象。感谢您的链接。 – Apples 2011-06-06 16:31:30