Django formset Validierung mit extra Form

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

Hi,

ich habe ein kleines Problem mit formsets die zusätzlich noch ein leeres Form anzeigen sollen.

Code: Alles auswählen

TestFormSet = formset_factory(TestForm, extra = 1)
Ich benutze dieses formset zum Hinzufügen eines zusätzlichen Datensatzes und zum Editieren der bereits vorhandenen. Wenn nun der Benutzer lediglich Daten ändert (bereits vorhandene Datensätze) und keinen Datensatz hinzufügt, dann spinnt die Validierung rum, denn der zusätzliche Datensatz ist dann leer und es wird scheinbar nicht erkannt, dass dieser leer sein darf, da er nicht hinzugefügt werden soll.

Kann ich das irgendwie ändern? Idealerweise wird der leere Datensatz gar nicht erst nach der Validierung in formset.forms auftauchen.

Code: Alles auswählen

...
elif request.method == 'POST':
    formset = TestFormSet(request.POST)
    if formset.is_valid():
      for form in formset.forms:
        test_id = form.cleaned_data['test_id']
        if test_id is not None:
          foo = models.Test.objects.get(id = test_id)
        else:
          foo = models.Test()
        foo.bar = form.cleaned_data['bar']
        foo.save()
return render_to_response('test.html', {'formset' : formset}, context_instance = RequestContext(request))
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

Komisch: Unter http://docs.djangoproject.com/en/dev/to ... validation heisst es eigentlich, dass sowas nicht passieren sollte...
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Das Problem hatte ich auch schon mal. formset.save hast das problem nicht, das passiert nur wenn du händisch durch die forms loopst. Sag bitte hier Bescheid wenn du es herausgefunden hast.
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

fomset.save() macht in meinem Fall glaube ich nichts, da es kein ModelForm ist und folglich save() auch nicht weiß wo es speichern soll. Ich untersuche das Problem noch ein wenig, aber es scheint nicht einfach zu sein... Was hast Du damals gemacht?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Mein Fehler, ich war auf modelformsets fixiert. Nun ich hab das Problem nicht wirklich umgangen, es besteht sogesehen immer noch. Aber du könntest mal in django-users nachfragen.
Antworten