Лучший способ, которым я знаю, это инициализировать поля перед передачей формы в шаблон путем передачи словаря initial
в форму или передачи объекта instance
в форму.
Затем вы должны убедиться, что поля отключены, или вы должны сделать их скрытыми полями, а затем отобразить поля как обычный текст.
Самое главное, если вы передаете данные клиенту, который затемЧтобы быть отправленным обратно в форме, вы должны убедиться, что поступающие данные совпадают с поступившими данными (в целях безопасности).Сделайте это с помощью функции clean_[field]
в форме.Это должно выглядеть следующим образом.
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
def clean_date_created(self):
if self.cleaned_fields['date_created'] != self.instance.date_created:
raise ValidationError, 'date_created has been tampered'
self.cleaned_fields['date_created']
[Edit / Addendum] В качестве альтернативы, вы можете передать данные непосредственно в шаблон для визуализации отдельно, а затем прикрепить данные к вашей форме после того, как вывернуть его на ваш взгляд.Это должно выглядеть примерно так:
def recieve_form(request, ...):
...
f = MyForm(request.POST, instance=a)
new_model_instance = f.save(commit=False)
new_model_instance.date_created = <whatever>
new_model_instance.save()