2012-10-22 92 views
1

获取错误“Todos.user”必须是“UserProfile”实例。有人能解释为什么吗? 我希望Todos中的用户应该指向UserProfile,并且我保存在Todos中的任何内容都应显示在/ profile /中?“Todos.user”必须是“UserProfile”实例

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    birth =models.DateField() 
    name = models.CharField(max_length=100) 
    def __unicode__(self): 
     return self.name 



class Todos(models.Model): 
    user  = models.ForeignKey(UserProfile) 
    title = models.CharField(max_length=100) 
    created = models.DateField() 
    start_time  = models.TimeField() 
    end_time  = models.TimeField() 
    def __unicode__(self): 
      return unicode(self.user) 

形式

class todosform(ModelForm): 
    title  = forms.CharField(label=(u'Todo')) 
    created  = forms.DateField(label=(u'Date')) 
    start_time  = forms.TimeField(label=(u'Start Time')) 
    end_time  = forms.TimeField(label=(u'End Time')) 
    #user  = forms.CharField(label=(u'username') 
    class Meta: 
     model = Todos 
     exclude=('user',) 


#url todo url(r'^todo/$', 'registration.views.todo'), 

def todo(request): 
    if request.user.is_authenticated(): 
     Todos.objects.filter(user=request.user) 
    if request.method == 'POST': 
     form =formtodos(request.POST) 
     if form.is_valid():# All validation rules pass 
      todoss = form.save(commit=False) 
      todoss.user = request.user 
      form.save() 
      return HttpResponseRedirect('/profile/') 
    else: 
     form = formtodos() 

    context = {'form':form} 
    return render_to_response('todo.html', context, context_instance=RequestContext(request)) 



#url profile url(r'^profile/$', 'registration.views.Profile'), 

@login_required # decorator to check if request login 
def Profile(request): 
    if not request.user.is_authenticated(): #if user not logged in 
     return HttpResponseRedirect('/login/') 
    #model = request.user.todos_set.all().order_by('created')[:7] 
    #u = Todos.objects.filter(created_by = request.user).get(pk=user) 
    registration = request.user.get_profile 
    context = {'registration':registration } 
    return render_to_response('profile.html',context,context_instance=RequestContext(request)) 

回答

2

userTodos字段是一个ForeignKey到UserProfile,不Userrequest.userUser的一个实例。你可以这样:

todoss.user = request.user.get_profile() 
+0

记住什么get_profile()将在Django 1.5被弃用 – inoks

+0

异常值:\t 用户配置匹配查询不存在......但是已经有一个用户配置 – Shazib

相关问题