2010-06-07 61 views
0

我有一个方法,我从用户保存数据,但每个用户必须有一个配置文件,所以每次他保存时,数据应该被覆盖。 首先我验证他是否已经有一个配置文件数据,在这种情况下,我添加一个实例的形式。如果没有(这是他的第一次注册),我只是将数据添加到DB 我的代码是: 但我得到一个错误:'QuerySet'对象没有属性'_meta' 是我的方法吗?谢谢!Django窗体实例

高清save_userprofile(请求):

if request.method == 'POST': 
     u = UserProfile.objects.filter(created_by = request.user) 
     if u: 

      form = UserProfileForm(request.POST, request.FILES,instance=u) 
     else: 
      form = UserProfileForm(request.POST, request.FILES) 

回答

4

,你应该使用get()方法。

from django.core.exceptions import ObjectDoesNotExist 
try: 
    u = UserProfile.objects.get(created_by = request.user) 
    # can update here 
except ObjectDoesNotExist: 
    # create object 

queryset reference应解释所有。您也可能会发现get_or_create()很有用。

1

UserProfileForminstance参数不希望接收到QuerySet,这是你给它什么。以检索配置文件,您应该使用这个,它返回一个UserProfile对象:如果你希望只是一个对象从查询回

u = UserProfile.objects.get(created_by = request.user)