2012-10-22 3 views
1

Getting Error "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

Todos에 귀하의 user 필드 UserProfile하지 User에 외래 키입니다. request.userUser의 인스턴스입니다. 당신이 위해 할 수는 :

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

마음에 무엇을 get_profile을 (유지)는 장고 1.5에서 더 이상 사용되지 않습니다 예외 값 – inoks

+0

: \t USERPROFILE 일치하는 쿼리가 존재하지 않습니다 ...하지만 이미 사용자 프로필이 – Shazib

관련 문제