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 django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/7236dee6-010d-8d7e-df6c-4c1007043bdc%40cafu.de.

Reply via email to