Я следил за этой полезной на вид статьей http://collingrady.wordpress.com/2008/02/18/editing-multiple-objects-in-django-with-newforms/. К сожалению, он не намекает на код шаблона, поэтому я догадываюсь там.
Я хочу создать кучу формна странице, чтобы добавить несколько объектов в модель с некоторыми общими свойствами, установленными другой формой, либо в переменных страницы, либо в верхней части страницы.Это для отметки учителя.
Мои views.py:
def record_assessments(request, teachinggroup, objective):
theclass = TeachingGroup.objects.get(name__iexact = teachinggroup)
pupils = Pupil.objects.filter(teaching_group = theclass)
theobjective = Objective.objects.get(code = objective)
thedate = datetime.date.today()
if request.method == 'POST':
aforms = [PupilAssessmentForm(request.POST, prefix=x.id, instance=Assessment()) for x in pupils]
if all(af.is_valid() for af in aforms):
for af in aforms:
new_record = af.save(commit = False)
new_record.objective = theobjective
new_record.date = thedate
new_record.save()
return redirect("/app/" + theclass + "/" + marksheet + "/" + theobjective.strand.code|lower + "/")
else:
aforms = [PupilAssessmentForm(prefix=str(x.id)) for x in pupils]
return render_to_response('recordassessments.html', locals())
Мне еще не удалось проверить логику в первом цикле if, так как мне не удалосьPOST форму еще правильно.
Страница отображается правильно, если я положил
else:
aforms = [PupilAssessmentForm(prefix=str(x.id), instance=x) for x in pupils]
Но затем я связываю ModelForm из модели Assessment с объектом в модели Pupil, который кажетсянеправильно.
Мой шаблон:
{% for af in aforms %}
<form action="" method="post">
{{af.instance}}{{ af.errors }}
<p>
{{ af }}
{% endfor %}
<input type="submit" value="Submit">
</form>
Ошибка (выбранные фрагменты):
Exception Type: TemplateSyntaxError
Exception Value: Caught DoesNotExist while rendering:
error at line 20
Caught DoesNotExist while rendering:
20 {% for af in aforms %}
И все же список переменных появляется в переменных страницы:
aforms
[<two.app.forms.PupilAssessmentForm object at 0x21db0d0>,
<two.app.forms.PupilAssessmentForm object at 0x21db650>]