0

Django でログインしているユーザーに追加のフォームを添付する方法について質問があります。追加のフォームがログインしたユーザーに属し、フォームに入力したデータがログインしたユーザーのテーブルの下にあることを望みます。私は Django と Python を初めて使用します。しばらくお待ちください。これで何をしたいのかを正しく説明できることを願っています。

このビューに入力するデータは、ログインしているユーザーのみの下に置かれます 基本的に、このビューをログインしているユーザーのみにアタッチしたい 取得しているエラーは例外値です:

registration_todos.user_id は NULL にできません

#models

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(User)
    title    = models.CharField(max_length=100)
    created  = models.DateField()
    time     = models.TimeField()
    def __unicode__(self):
            return unicode(self.user)

#forms   additional form for todos  
    class formtodos(ModelForm):
        title       = forms.CharField(label=(u'Todo'))
        created     = forms.DateField(label=(u'Date'))
        time        = forms.TimeField(label=(u'Time'))
        #user        = forms.CharField(label=(u'username'))
            class Meta:
               model = todos
               exclude=('user',) 
#view  
 def modeltodo(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.created_by = request.user
        form.save()
        return HttpResponseRedirect('/profile/')
else:
    form = formtodos() # An unbound form

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

1 に答える 1

1

exclude = ('user',)フォームで指定しました。これは、フォームを保存しようとするuser_idと、エラーの原因となる存在がないことを意味します。save()おそらく呼び出しの前にこれを置きたいでしょう:todoss.user = request.user

于 2012-10-14T10:28:58.293 に答える