ブログ プロジェクトの投稿を db に保存するためのフォームを作成しました。インデックスページをデザインしました。今、新しい投稿を作成するためのフォームを作成しようとしています。その前は「manage.pyシェル」を使用していました
これが私の見解です:
def addpost(request):
form = addForm()
if request.method=="POST":
titleform = request.POST['title']
bodyform = request.POST['body']
checkform = request.POST['isdraft']
if form.is_valid():
n = Post(title = titleform, body = bodyform, isdraft=checkform)
n.save()
return HttpResponseRedirect('/admin/')
else:
pass
return render(request,'userside/add.html',{'form':form,})
私のmodel.py:
class Post(models.Model):
title = models.CharField(max_length = 100)
body = models.TextField()
slug = AutoSlugField(populate_from='title',unique=True)
posted = models.DateField(auto_now_add=True)
isdraft = models.BooleanField()
def __unicode__(self):
return self.title
@permalink
def get_absolute_url(self):
return ('view_blog_post',None, {'postslug':self.slug})
class addForm(forms.Form):
title = forms.CharField(max_length=100)
body = forms.CharField(widget=forms.Textarea)
isdraft = forms.BooleanField()
「isdraft」フィールドとしてフォームを送信すると、False(未チェック)になります。次のようなエラーが発生します。
/admin/addpost/ での MultiValueDictKeyError
"キー 'isdraft' が見つかりません"
「isdraft」フィールドとしてフォームを送信すると、True(checked) ; それは何も与えません。さっぱりとしたフォルム。dbにデータを追加しません。
私は間違っている..
ありがとうございました
編集:ドミトリー・ベランスキーの答えは、チェックボックスのエラーに対して機能しました。しかし、まだデータをdbに追加していません。フォームを更新するだけです。