Comment définir un champ en lecture seule sous une forme Django? Je sais comment désactiver un champ mais ce n'est pas ce que je recherche. Toute aide serait appréciée.
Vous pouvez utiliser le paramètre facultatif attrs
lors de la définition du Field
. En être témoin:
somefield = forms.CharField(
widget=forms.TextInput(attrs={'readonly':'readonly'})
)
Dans Django 1.9+
:
somefield = forms.CharField(disabled=True)
Dans Django 1.9 dans un attribut Field.disabled disponible: https://docs.djangoproject.com/en/1.9/ref/forms/champs/# désactivé
L'argument booléen désactivé, lorsqu'il est défini sur True, désactive un champ de formulaire à l'aide de l'attribut HTML désactivé afin qu'il ne soit pas modifiable par les utilisateurs. Même si un utilisateur altère la valeur du champ soumise au serveur, elle sera ignorée en faveur de la valeur des données initiales du formulaire.
sinon
utiliser l'attribut widget en lecture seule
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