Sam & Max » form http://sametmax.com Du code, du cul Sat, 07 Nov 2015 10:56:13 +0000 en-US hourly 1 http://wordpress.org/?v=4.1 Exclure un champ d’un formulaire parent avec Django 1 http://sametmax.com/exclure-un-champ-dun-formulaire-parent-avec-django/ http://sametmax.com/exclure-un-champ-dun-formulaire-parent-avec-django/#comments Sun, 15 Jul 2012 13:14:41 +0000 http://sametmax.com/?p=1130 Cas simple: vous héritez d’un formulaire, mais il y a un champ que vous ne souhaitez pas utiliser. Malheureusement, il n’y a aucun hook dans Django permettant d’exclure ce champ.

Mais bonne nouvelle, il suffit de retirer le champ du dictionnaire self.field.

Exemple, la lib django-contact-form me donne:

class ContactForm(forms.Form):
 
    name = forms.CharField(max_length=100,
                           widget=forms.TextInput(attrs=attrs_dict),
                           label=u'Your name')
    email = forms.EmailField(widget=forms.TextInput(attrs=dict(attrs_dict,
                                                               maxlength=200)),
                             label=u'Your email address')
    body = forms.CharField(widget=forms.Textarea(attrs=attrs_dict),
                              label=u'How can we improve %s?' % (Site.objects.get_current().name))

Et je veux le même formulaire, sans le champ name:

class SimpleContactForm(ContactForm):
    def __init__(self, *args, **kwargs):
        super(SimpleContactForm, self).__init__(*args, **kwargs)
        self.fields.pop('name')

Il faut bien sur s’assurer que name n’est utilisé nul part dans une des méthodes de ConctactForm.

]]>
http://sametmax.com/exclure-un-champ-dun-formulaire-parent-avec-django/feed/ 1