Django: Wie kann die gefälschte Option '----' von einem aus dem modalen Formularfeld erzeugten Element ausgeschlossen werden?

  • models.py:

     class Foo(models.Model):
        ...
        TIME_UNIT_TYPE = (
            ('D', 'Day'),
            ('W', 'Week'),
            ('M', 'Month'),
        )
        time_unit = models.CharField(max_length=1, choices=TIME_UNIT_TYPE)
        ...
     

    forms.py:

     class FooForm(ModelForm):
        class Meta:
            model = Foo
            fields = (time_unit,)
     

    Wenn time_unit in der Vorlage dargestellt wird, wird das resultierende Element auswählen enthält eine falsche '----' Option, die ich für meine App nicht benötige. Ich kann diese falsche Option in init () entfernen oder das time_unit -Attribut in FooForm neu definieren. Ich habe mich jedoch gefragt, ob es andere, einfachere Wege gibt, das Gleiche zu erreichen.

    22 November 2011
    tamakisquare
2 answers
  • Versuchen Sie es mit:

     from django.forms import ModelForm
    from django import forms as forms
    
    class FooForm(ModelForm):
        time_unit = forms.forms.TypedChoiceField( 
                        required=True,
                        choices = Foo.TIME_UNIT_TYPE
                    )    
        class Meta:
            model = Foo
            fields = (time_unit,)
    
             ?? 
      

    Testen Sie, ob dies für Sie funktioniert.

    22 November 2011
    dani herrera
  • Keine besonders einfachen / weniger Code. Sie können alternativ auch ein eigenes Feld für Ihre time_unit erstellen und die erweitern _get_choices() -Methode der Standard-ChoiceField-Methode und verwenden Sie sie in Ihrem time_unit -Modellfeld, wenn Sie der Meinung waren, dass dies sauberer ist, aber dies viel mehr Arbeit ist

    22 November 2011
    Timmy O'Mahony