所以我想弄清楚的是如何爲這些項目中的每一個創建一個表單,這樣它就可以提交給這個學生添加一個筆記。如果那一張紙幣沒有被填寫,那麼它會收到一個錯誤通知,只是針對那一張紙幣。這只是我試圖在這方面獲得投入的一個簡單例子。我不確定在這裏需要什麼類型的表單,這將允許我在表單中顯示所有考試對象信息。頁面上有多個相同的表格
編輯:所以可能我認爲我有一個解決方案。 我做了
examscores = Exam.objects.all()
NoteFormset = formset_factory(NoteForm, extra = len(examscores))
notesets = NoteFormset()
examscores_and_forms = zip(examscores, notesets.forms)
然後在模板中我{在examscores_and_forms%%,持續考試,形式}做 這似乎產生了一定的成效。我只需要隱藏對象的id和get_object_or_404,如果窗體是有效的和更改的。稍後我將通過完整的解決方案進一步更新。
views.py
def studentscores(request):
examscores = Exam.objects.all()
if request.POST:
form = NoteForm(request.POST)
if form.is_valid():
pass
return HttpResponseRedirect(request.get_full_path())
else:
return render_to_response('exams.html', { 'examscores': examscores, 'form': form }, context_instance=RequestContext(request))
else:
form = NoteForm()
return render_to_response('exams.html', { 'examscores': examscores, 'form': form }, context_instance=RequestContext(request))
models.py
class Student(models.Model):
firstname = models.CharField(max_length=100)
lastname = models.CharField(max_length=100, blank=True, null=True)
def __unicode__(self):
if self.firstname and self.lastname:
fullname = self.firstname + " " + self.lastname
return fullname
else:
return self.firstname
class Note(models.Model):
student = models.ForeignKey(Student)
note = models.TextField()
def __unicode__(self):
return str(self.student)
class Exam(models.Model):
student = models.ForeignKey(Student)
score = models.IntegerField()
def __unicode__(self):
return str(self.student) + " " + str(self.score)
forms.py
class NoteForm(forms.Form):
note = forms.CharField(required=True)
模板
{% for exam in examscores %}
<form action="" method="post">{% csrf_token %}
<table>
<tr>
<td>{{ exam.student }}</td>
<td>{{ exam.score }}</td>
</tr>
<tr>
<td>{{ form.as_p }}</td>
<td><button type="submit" name="action" value="addnote" />Note</button></td>
</tr>
</table>
</form>
{% endfor %}
我只是回來看看是否有這個任何評論。其實我剛纔正在研究inlineformset_factory。試圖找出我可以如何配合顯示與我提交的表單共享FK的對象。我可能不得不編輯我的上述問題來說明這一點。謝謝你回來。 – bDreadz 2014-10-29 23:37:11
看看這裏的'form_valid' http://stackoverflow.com/a/26591411/3033586 – madzohan 2014-10-29 23:47:17
'如果你創建了這個對象,我怎麼可以配合顯示與我提交的表單共享一個FK的對象'另外一個字段除了FK,還有'form'來自example應該是你的'object'類的實例ModelForm – madzohan 2014-10-29 23:50:13