2012-04-06 6 views
1

Ich habe folgendes:DJANGO: blank wählen Sie die Option in Form fehlt

MODEL.PY

LIST = (('Manager', 'Manager'),('Non-Manager', 'Non-Manager'),) 

class Employee(models.Model): 
    fname = models.CharField(max_length=15, blank=False, null=False) 
    manager = models.CharField(max_length=15, choices=LIST, blank=True, null=True) 
    comment = models.TextField(blank=True, null=True) 
    def __unicode__(self): 
     return self.fname 

class EmployeeForm(forms.ModelForm): 
    fname = forms.CharField(required=True, label='First Name') 
    manager = forms.CharField(required=False, widget=Select(choices=LIST), label='Their Position?') 
    comment = forms.CharField(required=False, widget=forms.Textarea(attrs={'cols': 50, 'rows': 10}), label='Comments') 
    class Meta: 
     model = Employee 

Wenn ich Manager aus der EmployeeForm entfernen, erhalte ich eine "------", wie eine Option in der Forms Dropdown-Menü, aber wenn ich Manager in der EmployeeForm (und ich muss, um die Felder Beschriftung überschreiben), entfernt es die "------". Wie erlaube ich dem EmployeeForm, die Option "------" beizubehalten?

+0

Worauf ist 'LIST' eingestellt? – dgel

+0

Sorry, das war ein Fehler, siehe korrigierte Frage. – thedeepfield

Antwort

2

Was ist so etwas wie:

manager = forms.CharField(required=False, widget=Select(choices=(('', '----------'),) + LIST), label='Their Position?') 
+0

Also ich habe diese Lösung gesehen. Ich denke, ich werde es versuchen, aber ich denke, ich frage mich, warum, wenn ich Manager von EmployeeForm entfernt, gibt es mir diese Option standardmäßig? und legt es als Standardoption fest? – thedeepfield

+0

Wenn es es automatisch tut, weiß es, dass "leer = True", also fügt daher die leere Option hinzu. Wenn Sie es selbst machen, mit Ihrem eigenen Widget, dann liegt es an Ihnen, die richtigen Entscheidungen zu treffen. – dgel

+0

gibt es keine Möglichkeit, leeres = True im Widget zu setzen? – thedeepfield

Verwandte Themen