Hi Nick,
I've thought a bit more about this, but it seems that my requirements are
different from yours: E.g. I don't need the client-side validation and
especially don't want the complexity that goes with it; on the other hand, I
need something that also works with formsets, not only with individual forms.
Am 27.12.21 um 06:36 schrieb Nick Farrell:
> *The problems *(from highest to lowest priority)*:*
> [...]
> *2)* Not being able to safely lock a model/queryset beyond the lifetime of
> the request.
I don't quite understand this. It sounds like pessimistic locking?
> *3)* Not knowing that data has changed on the server until you submit a form.
> *4)* Smarter form validation
Well, this comes at the cost of the complexity to implement this. For me, at
least at this time, the cost is much to high to consider this.
> *The solutions*
>
> *Enhanced forms*
> - when rendering a form (using e.g. as_p()), alongside the normal INPUT DOM
> elements, include additional hidden fields which store a copy of each form
> field's initial value.
I don't think that having hidden fields with the initial values is necessary:
In your view, you can initialize the form like this:
if request.method == 'POST':
form = SomeForm(request.POST, initial=init)
...
Note the `initial` parameter: It is used just as it is in the GET request. This
allows you to use `form.changed_data` and `form.has_changed()` in form
validation.
Note that the above, i.e. reconstructing the initial values also for POST
requests, is useful both for individual forms and even more with multiple
forms, i.e. formsets: If for example you edit a list (formset) of appointments,
in formset validation you must make sure that the list of appointments has not
changed in the meantime (e.g. appointments were not inserted, replaced or
deleted).
Best regards,
Carsten
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/7236dee6-010d-8d7e-df6c-4c1007043bdc%40cafu.de.