Template
Code: Alles auswählen
...
<form method="post" action=""> {% csrf_token %}
{{ formset.management_form }}
{{ formset.non_form_errors.as_ul }}
<table id="formset" class="form">
{% for form in formset.forms %}
{% if forloop.first %}
<thead><tr>
{% for field in form.visible_fields %}
<th>{{ field.label}}</th>
{% endfor %}
</tr></thead>
{% endif %}
<tr>
{% for field in form.visible_fields %}
<td>
{% if forloop.first %}
{# Include the hidden fields in the form #}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% endif %}
{{ field.errors.as_ul }}
{{ field }}
</td>
{% endfor %}
</tr>
{% endfor %}
</table>
<input type="submit" value="Absenden" />
</form>
...
View:
Code: Alles auswählen
...
from ticketmanager.forms import teilnahme_user, UploadFileForm, schuelerManuellForm
from ticketmanager.models import Event, User_Event, csv_import, erstelle_rechnungsnummer
...
def personen_eintragen(request, event_id_local, klasse_id_local):
uberschrift = "Personen manuell eintragen"
klasse_local = get_object_or_404(Klasse, pk=klasse_id_local)
schueler=UserProfile.objects.filter(klasse = klasse_local)
UserFormSet = formset_factory(schuelerManuellForm, extra=0)
if request.method == 'POST':
formset = UserFormSet(request.POST, request.FILES)
if formset.is_valid():
for datensatz in formset.cleaned_data:
## Auswerten...
else: #wenn das Formular nicht ausgefüllt wurde schreibe die Daten aus der DB rein.
initial_data=[]
for schueler_l in schueler:
teilnehmer, created = User_Event.objects.get_or_create(event_id = Event.objects.get(pk=event_id_local), user_id = schueler_l.user , defaults={'rechnungsnummer': erstelle_rechnungsnummer() })
initial_data.append({"schuelerID": schueler_l.pk,
"teilnahme": teilnehmer.teilnahme,
"bar_gezahlt": teilnehmer.bar_gezahlt})
formset = UserFormSet(initial=initial_data)
return render_to_response('ticketmanager/schueler_eintragen.html',
{'formset': formset,
'uberschrift': uberschrift},
context_instance=RequestContext(request))
...
Ich möchte den Namen allerdings nicht in einem TextInput-Widget anzeigen sondern als Text, eine Art PlainOutput-Widget.