Djangoでアプリを作成しています。
ユーザーからの質問投稿のデータをデータベースに反映したいのですが、投稿されたデータのうち、一部だけ拾ってくれないデータがあります。title、content、tagというデータのうち、tagを拾ってくれないです。tagはcheckboxで選択するもので、複数選択することができます。
投稿はPOSTで投稿していますが、原因が特定できません。
POSTでどのデータが投げられたか、調べることができる方法はあるのでしょうか?
エラーが出ることもないので、内部でどのように処理されたかが掴めないです。
ちなみに、models.pyには問題がないと思います。admin画面で操作すると、タグのデータを登録することができるからです。
コードは、下記のとおりです。
python
1# models.py 2 3# tagを扱うモデル 4class Tag(models.Model): 5 tagId = models.IntegerField(primary_key=True) 6 tagclass = models.ForeignKey(TagClass, on_delete=models.CASCADE) #ForeignKeyを使っていますが、この点は問題ないと思います。 7 name = models.CharField(max_length=100) 8 9 def __unicode__(self): 10 return self.name 11 12# 質問を扱うモデル 13class Question(models.Model): 14 title = models.CharField(max_length=100) 15 tag = models.ManyToManyField(Tag) #このtagを拾ってくれないです。 16 content = models.TextField() 17 18 def __unicode__(self): 19 return self.title
python
1# views.py 2# 質問投稿を扱う 3def questionPost(request): 4 if request.method =='POST': 5 form = QuestionPostForm(request.POST) # QuestionPostFormは、下記forms.pyで定義 6 if form.is_valid(): 7 question = form.save(commit = False) 8 question.save() 9 else: 10 form = QuestionPostForm() 11 if form.is_valid(): 12 question = form.save(commit = False) 13 question.save()
python
1# forms.py 2class QuestionPostForm(forms.ModelForm): 3 class Meta: 4 model = Question 5 fields = ( 6 'title', # データベースに登録できている 7 'tag', # データベースに登録できない 8 'content', # データベースに登録できている 9 )
実際はHTMLはテンプレートにレンダリングされて表示されますが、実際に表示されたものを要約して転記します。
html
1<form method="post" action="/question/"> 2<input type='hidden' name='csrfmiddlewaretoken' value='4DJ...' /> 3<input type="text" name="title"> <!--title入力--> 4<textarea name="content"></textarea> <!--content入力--> 5<input type="checkbox" name="tag" value="1">A <!--tagをcheckboxから選択--> 6<input type="checkbox" name="tag" value="2">B 7<input type="submit" value="送信"> 8</form>
ちなみに、views.pyにおいて、
title = form.cleaned_data['title']
tag = form.cleaned_data['tag']
content = form.cleaned_data['content']
question = Question(
title = title,
tag = tag,
content = content
)
question.save()
と書くと、
'tag' is an invalid keyword argument for this function
というエラーが出ました。
どこに問題があるかお分かりの方、ご教示頂ければ幸いです。
もしくは、エラーが出ていない状態で、どのデータがpostされて、処理がどこまで進んだかを調べる方法があるのでしょうか。それが分かれば自分で調べてみることができるのですが。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/04/27 11:14