ループして質問への回答を記録するにはどうすればよいですか?私はいくつかの質問を持っており、すべての力に同時に答えて、すべての質問と答えのループを作成できるループを作成しますが、フォームを検証すると、データベースに登録されません...
だからこれは私のmodels.pyです:
class Page(models.Model):
title = models.CharField(max_length=30)
def __str__(self):
return self.title
class Question(models.Model):
label = models.CharField(max_length=30)
page = models.ManyToManyField(Page)
def __str__(self):
return self.label
class Reply(models.Model):
question = models.ForeignKey(Question)
user = models.ForeignKey(Personne)
answer = models.CharField(max_length=30)
creationDate = models.DateTimeField(default=django.utils.timezone.now)
def __str__(self):
return str(self.answer)
と私のテンプレート:
<center><h3> Formulaire de la {{ numPages }} pour lutilisateur : <center>{{ logged_user|upper }}.</center> </h3></center>
<form action="" method="POST" enctype="multipart/form-data" >
{% csrf_token %}
<!-- {{ form.as_p }} -->
<p>
{% for question in questions %}<hr>
<label for="question">{{ question }}</label>
<input type="hidden" id="id_question_{{ question.id }}" name="question" value="{{ question.id }}"/>
</p>
<p>
<label for="answer">Réponse :</label>
<input type="text" id="id_answer_{{ question.id }}" name="answer" />
</p>
{% endfor %}<hr>
<p>
<label for="creationDate">Date de création :</label>
<input type="text" id="id_creationDate" name="creationDate" />
</p>
<p>
<label for="user"> User : {{ logged_user }}</label>
<input type="hidden" id="id_user" name="user" /><!-- <select name="{{ logged_user }}" size="1">
<option id="{{ logged_user.id }}">{{ logged_user }}</option>
</select> -->
</p>
<p>
<br><br><br>
<center><input type="submit" class="btn btn-success" value="Submit" /></center>
</p>
</form>
と私のviews.py:
def access(request,instance):
replies = Reply.objects.all()
logged_user = get_logged_user_from_request(request)
numPages = Page.objects.get(pk=instance)
questions = Question.objects.filter(page=instance)
pagesfilter = Question.objects.get(pk=1) # PEUT ETRE CHANGER SE FILTRE - A VOIR
# pagesfilter = Page.objects.get(pk=instance).reply_set.filter(user=logged_user) # PEUT ETRE CHANGER SE FILTRE - A VOIR
form = ReplyForm(request.GET)
personnes = Personne.objects.all()
if logged_user:
if len(request.POST) > 0:
form = ReplyForm(request.POST)
if form.is_valid():
user = form.cleaned_data['user']
question = form.cleaned_data['question']
answer = form.cleaned_data['answer']
form.save(commit=True)
return HttpResponse(form.cleaned_data["user"])
else:
return render_to_response('polls/access.html', {'logged_user':logged_user, 'pagesfilter': pagesfilter, 'numPages': numPages, 'personnes': personnes, 'replies': replies, 'questions': questions, 'form': form})
else:
form = ReplyForm()
return render_to_response('polls/access.html', {'logged_user':logged_user, 'pagesfilter': pagesfilter, 'numPages': numPages, 'personnes':personnes, 'replies': replies, 'questions': questions, 'form': form})
else:
return HttpResponseRedirect('/login')
私のforms.py
class ReplyForm(forms.ModelForm):
class Meta:
model = Reply
fields = ('question','answer','user')
URLを編集:
url(r'^baseVisite/$', views.baseVisite),
url(r'^access/(?P<instance>[0-9]+)/$', views.access),
送信ボタンが機能しないのはなぜですか、何を忘れましたか?
編集:ModelFormを使用して多くのレコードを更新したい:できません。あなたの例では、{{form.as_p}}フィールドのみが機能します。この投稿のような標準フォームを使用する必要があります:djangoフォームでフィールドのリストを作成する方法
構文テンプレートが間違っています。あなたのpタグがあなたの外にあるためループ。
代わりにこれを試してください:
<center><h3> Formulaire de la {{ numPages }} pour lutilisateur : <center>{{ logged_user|upper }}.</center> </h3></center>
<form action="" method="POST" enctype="multipart/form-data" >
{% csrf_token %}
<!-- {{ form.as_p }} -->
{% for question in questions %}
<hr>
<p>
<label for="question">{{ question }}</label>
<input type="hidden" id="id_question_{{ question.id }}" name="question" value="{{ question.id }}"/>
</p>
<p>
<label for="answer">Réponse :</label>
<input type="text" id="id_answer_{{ question.id }}" name="answer" />
</p>
{% endfor %}<hr>
<p>
<label for="creationDate">Date de création :</label>
<input type="text" id="id_creationDate" name="creationDate" />
</p>
<p>
<label for="user"> User : {{ logged_user }}</label>
<input type="hidden" id="id_user" name="user" /><!-- <select name="{{ logged_user }}" size="1">
<option id="{{ logged_user.id }}">{{ logged_user }}</option>
</select> -->
</p>
<p>
<br><br><br>
<center><input type="submit" class="btn btn-success" value="Submit" /></center>
</p>
</form>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加