Wie kann man ein Django-Formular erstellen, um zu bestimmen, wo die Schlüssel die Feld-ID in der Vorlage und die Werte die Anfangswerte sind?
Ich habe ein riesiges Django-Formular und muss ein Diktat erstellen, in dem die Schlüssel die Feld-ID in der Vorlage und die Werte die Anfangswerte sind. Etwas wie das:
{'field1_id_in_template': value1, ...}
Weiß jemand wie das geht?
Ich kann das Präfix 'id_' für jeden Feldnamen im form.fields-Wörterbuch hinzufügen, aber ich kann ein Problem haben, wenn jemand die ID für widget.attrs ändert
Antworten:
Dies ist die CBV-Methode:
def post_ajax(self, request, *args, **kwargs):
form = ChooseForm(request.POST, log=log)
if form.is_valid():
instance = form.save()
inst_form = InstanceForm(instance=instance, account=request.user)
fields = {}
for name in inst_form.fields:
if name in inst_form.initial:
fields[inst_form.auto_id % name] = inst_form.initial[name]
return HttpResponse(
json.dumps({'status': 'OK','fields':fields},
mimetype='appplication/json'
)
assert False
Und das ist ein Grund, warum ich das tue: Mit dieser Antwort kann ich so etwas auf Client schreiben. Jetzt muss ich nicht mehr alle Felder auf der Seite manuell initialisieren
function mergeFields(data) {
for(var id in data) {
$("#"+id).val(data[id]).change();
}
}