Hallo!
Ich habe mit einem Formset eine Art Tabelle erstellt. In dieser Tabelle werden Daten abgefragt. Jetzt möchte ich vor den jeweiligen Datensatz einen Text anzeigen, in meinem Fall ein Name. Wie kann ich das bewerkstelligen? Ich dachte an ein Dummywidget welches nur Text ausgibt. Ist soetwas möglich? Wie würdet ihr dieses Problem lösen?
Der Text links ist noch nicht vorhanden.
[Django] Text output Widget in Formset
Template
View:
Ich möchte den Namen allerdings nicht in einem TextInput-Widget anzeigen sondern als Text, eine Art PlainOutput-Widget.
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>
...
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))
...
Problem (wahrscheinlich) gelöst: Writing your own django widget