Seite 1 von 1

Django formset Validierung mit extra Form

Verfasst: Sonntag 15. Februar 2009, 08:35
von lunas
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))

Verfasst: Sonntag 15. Februar 2009, 09:33
von lunas
Komisch: Unter http://docs.djangoproject.com/en/dev/to ... validation heisst es eigentlich, dass sowas nicht passieren sollte...

Verfasst: Sonntag 15. Februar 2009, 12:02
von apollo13
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.

Verfasst: Sonntag 15. Februar 2009, 12:55
von lunas
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?

Verfasst: Sonntag 15. Februar 2009, 14:44
von apollo13
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.