2016-12-21 3 views
5

Wie lege ich ein Feld schreibgeschützt in einem Django-Formular fest? Ich weiß, wie man ein Feld deaktiviert, aber das ist nicht das, wonach ich suche. Jede Hilfe wäre willkommen.Schreibgeschütztes Feld in Django-Form

+0

ist es Modell-Form? können Sie mehr von dem, was Sie brauchen, sagen –

+0

Ja, es ist ein CharField einer ModelForm. – 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

Antwort

8

Sie können den optionalen Parameter attrs bei der Definition der Field verwenden. Nämlich:

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

In django 1,9 in einem Field.disabled Attribut zur Verfügung: https://docs.djangoproject.com/en/1.9/ref/forms/fields/#disabled

Das behinderte boolean Argument, wenn auf True setzt, wird ein Formularfeld mit dem behinderten HTML-Attribute, so dass Es kann nicht von Benutzern bearbeitet werden. Selbst wenn ein Benutzer den Wert des Feldes manipuliert, der an den Server gesendet wurde, wird er zugunsten des Werts aus den Anfangsdaten des Formulars ignoriert.

sonst

das Widget verwenden 'Read-only-Attribut

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

In Django 1.9+:

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

Wichtige Sache zu Beachten Sie, dass die Felder nicht an den Server gesendet werden, wenn sie deaktiviert sind. Wenn Sie möchten, dass die Felddaten gepostet werden, machen Sie sie "readonly" – surfer190

Verwandte Themen