from django import forms from django.forms import widgets from django.utils.safestring import mark_safe from .models import Adherent class StringWidget(widgets.Input): def render(self, name, value, attrs=None): # Create a hidden field first hidden_field = widgets.HiddenInput(attrs) return mark_safe(u'%s %s' % (value, hidden_field.render(value, attrs))) class AdherentForm(forms.ModelForm): adherent_id = forms.CharField(disabled=True, label='Numéro d’adhérent') class Meta: model = Adherent exclude = () def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if self.instance.id: self.fields['adherent_id'].initial = self.instance.id else: self.fields['adherent_id'].initial = 'Veuillez sauvegarder pour obtenir un numéro d’adhérent.' self.fields['adherent_id'].widget = StringWidget() def has_changed(self): return True