2016-12-21 2 views
5

Как установить поле только для чтения в форме Django? Я знаю, как отключить поле, но это не то, что я ищу. Любая помощь будет оценена по достоинству.Поле только для чтения в форме Django

+0

является его модельную форму? вы можете рассказать больше о том, что вам нужно –

+0

Да, это CharField модели Model. – Foobar

+0

http://stackoverflow.com/questions/324477/in-a-django-form-how-do-i-make-a-field-readonly-or-disabled-so-that-it-cannot – mtt2p

ответ

8

При определении Field вы можете использовать необязательный параметр attrs. А именно:

somefield = forms.CharField(
    widget=forms.TextInput(attrs={'readonly':'readonly'}) 
) 
5

В Джанго 1,9 в Field.disabled атрибут доступен: https://docs.djangoproject.com/en/1.9/ref/forms/fields/#disabled

Инвалид логический аргумент, если установлено значение Да, отключает поле формы, используя отключенную атрибут HTML так, чтобы он не будет доступен для редактирования пользователями. Даже если пользователь сбрасывает значение поля, отправленное на сервер, оно будет проигнорировано в пользу значения из исходных данных формы.

иначе

использовать виджет '' только для чтения атрибутов

class PatientForm(forms.ModelForm): 

    def __init__(self, *args, **kwargs): 
     super(PatientForm, self).__init__(*args, **kwargs) 
     self.fields['field'].widget.attrs['readonly'] = True 

    class Meta: 
     model = Patient 
4

В Django 1.9+:

somefield = forms.CharField(disabled=True) 
+2

Важное значение для обратите внимание, что поля не будут отправляться на сервер, если они «отключены». Если вы хотите, чтобы данные поля были опубликованы, сделайте это 'readonly' – surfer190

Смежные вопросы