2016-10-10 2 views
0

Je voudrais avoir un ensemble de choix dans mon modèle pour le modèle et la validation.Django - ensemble de choix, mais pas de liste déroulante

Cependant, dans le model.form pour ce modèle je veux juste avoir un champ entier.

Comment puis-je changer le widget pour obtenir un InputField?

J'ai essayé de changer le widget à forms.Model, mais cela n'a pas semblé fonctionner. Je reçois une erreur:

'IntegerField' object has no attribute 'attrs' 

forms.py:

class KombiPublikationForm(forms.ModelForm): 

    class Meta: 
     model = KombiPublikation 
     #fields = [] 
     exclude = ['pub_sprache'] 
     widgets = { 
      'monat': forms.IntegerField(), # does not work 
     } 

model.py:

MONTH = (
    (1, 'Januar'), 
    (2, 'Februar'), 
    (3, 'März'), 
    (4, 'April'), 
    (5, 'Mai'), 
    (6, 'Juni'), 
    (7, 'Juli'), 
    (8, 'August'), 
    (9, 'September'), 
    (10, 'Oktober'), 
    (11, 'November'), 
    (12, 'Dezember'), 
) 

class KombiPublikation(models.Model): 
    [...] 
    monat = models.IntegerField(choices=MONTH) 

Merci!

+0

vous pouvez utiliser "ChoiceField" à la place. –

Répondre

0

J'ai trouvé la solution - NumberInput() est le bon widget.

0
from django.utils.dates import MONTHS 

choices=MONTHS.items()