2016-12-21 21 views
5

Jak ustawić pole tylko do odczytu w formularzu Django? Wiem, jak wyłączyć pole, ale to nie jest to, czego szukam. Każda pomoc będzie doceniona.Pole tylko do odczytu w formularzu Django

+0

jest to postać modela? możesz powiedzieć więcej o tym, czego potrzebujesz –

+0

Tak, jest to CharField z ModelForm. – Foobar

+0

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

Odpowiedz

8

Możesz użyć opcjonalnego parametru attrs podczas definiowania Field. Słownie:

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

W django 1,9 w Field.disabled atrybutu dostępny: https://docs.djangoproject.com/en/1.9/ref/forms/fields/#disabled

niepełnosprawne logiczna argumentacja, gdy ustawiona na True, wyłącza pole formularza przy użyciu wyłączoną atrybut HTML, tak aby nie będą edytowalne przez użytkowników. Nawet jeśli użytkownik narusza wartość pola przesłaną do serwera, zostanie zignorowany na korzyść wartości z początkowych danych formularza.

inaczej

używać widżet 'readonly' atrybut

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

W Django 1.9+:

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

Ważna rzecz do Uwaga: pola nie będą przesyłane do serwera, gdy są "wyłączone". Jeśli chcesz, aby dane pola były publikowane, wpisz 'readonly' – surfer190

Powiązane problemy