First point: .is_valid()
will NOT touch your database (unless you customize the form's validation, but then, well, you'd know why xD). It's the call to Model.save()
(either directly or thru form.save()
) that overwrites the previous value.
Second point: if you pass a model instance to your form (which is what you do), you can access it (and it's fields) thru {{ form.instance.your_field_name }}
in the template.
And finally, you can either totally exclude a model field from the ModelForm, or mark it as read-only.
All of this is rather well documented FWIW, so I kindly suggest you take some time reading the doc before going any further with bizarre and convoluted "solutions" (hint: you definitly don't need a middleware to get the original value, it's still in your database - until you overwrite it, that is).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…