@kytta If I understand your problem correctly, you could inject arbitrary HTML key value pairs via the widget attrs property in the ModelForm or add a conditional check that if an order exists in the form template disable the widget? Sorta like this:
{% if obj %}
<fieldset disabled><div class="control">{{ field }}</div></fieldset>
{% else %}
<div class="control">{{ field }}</div>
{% endif %}
@bpepple the thing is, if I have `field` specified as field of the ModelForm, then it should be sent on every POST request. However, if a field is disabled in HTML, it will not be sent on form submit; this triggers a ValidationError for a field user can't edit. I don't know what the behaviour of the fieldset is, though.
On the other note, I use Crispy Forms so I don't really have a template. Using HTML feels clunky, and writing custom Layout() objects is a pain 🙄
Thank you nevertheless!