Django,错误:UserProfile匹配查询不存在

时间:2012-02-19 01:25:29

标签: django

我正在学习django。现在,我需要创建一个Userprofile。

我已经创建了

模型
class UserProfile(models.Model):  
user = models.OneToOneField(User)  
active = models.BooleanField()
address = models.CharField('Shipping address', max_length=150, blank=True, null=True)
telephone = models.CharField('Telephone number for shipping', max_length=20, blank=True, null=True)
steps = models.DecimalField('Steps since creation', max_digits=100, decimal_places=2, null=True)
active = models.BooleanField()

def __str__(self):  
    return "%s's profile" % self.user  

在名为accounting的应用程序中。我已经创建了

def create_user_profile(sender, **kwargs):
#When creating a new user, make a profile for him or her.
u = kwargs["instance"]
if not UserProfile.objects.filter(user=u):
    UserProfile(user=u).save()

post_save.connect(create_user_profile,sender = User)

因此,每次创建用户时,都会自动创建配置文件。我已经创建并验证用户是在userprofile表中创建的。我也去了壳。我找了那个ID为4的用户。我为用户4打印了地址,我得到了地址。所以我相信他们是联系在一起工作的。但是当我转到HTML时,我得到了错误。

这是视图。

    from accounting.models import UserProfile, Charge, Wallet
from django.shortcuts import get_object_or_404, RequestContext
from django.shortcuts import render_to_response
from django.http import HttpResponse
from django.template import Context, loader
from django.contrib.auth.forms import UserCreationForm

#def userprofile(request, user_id):
def userprofile(request, user_id):


user_profile = request.user.get_profile()
active = user_profile.active
return render_to_response('accounting/templates/userprofile.html', {
    'user_profile': user_profile,   
    'active': active,
}, context_instance=RequestContext(request))

感谢。

2 个答案:

答案 0 :(得分:2)

确保您已在settings.py

中设置AUTH_PROFILE_MODULE = 'my_profile_app.UserProfile'

答案 1 :(得分:0)

而不是:

request.user.get_profile()

使用:

request.user.userprofile

经过多年的Django开发,从不需要AUTH_PROFILE_MODULE或get_profile()。我不知道使用get_profile()(如果有的话)的优点是什么,但它似乎是不必要的麻烦。

实际上,我通过使用django-annoying的AutoOneToOneField来解决更少的麻烦:https://bitbucket.org/offline/django-annoying/wiki/Home

有关OneToOne的更多信息:https://docs.djangoproject.com/en/dev/topics/db/models/#one-to-one-relationships