2013-05-09 53 views
2

在我的模型,我有一個CharField有幾個選擇:Django的:將選擇在形式上的init忽略

SURFACE_CHOICES = (
     ('as', _('Asphalt')), 
     ('co', _('Concrete')), 
     ('ot', _('Other')),) 
surface = models.CharField(choices = ROOF_SURFACE_CHOICES, 
     max_length = 2, blank = True, null = True,) 

我想避免的形式-------選擇的下拉框,並更換它由一個更具描述性的文字。

我用下面這行做的__init__ methodforms.py

def __init__(self, auto_id='%s', *args, **kwargs): 
    super(SurfaceUpdateForm, self).__init__(*args, **kwargs) 
    self.fields['surface'].choices.insert(0,('', _('Please choose a surface'))) 

然而,在我目前的應用程序,第一行仍然-------而不是由上面的說明文字代替。有沒有更好的方法來設置空白值?

回答

0

出現-------是因爲您的字段有blank=True,也就是說它是可選的。這Django力學有點難以理解,但你可以覆蓋的選擇:

def __init__(self, auto_id='%s', *args, **kwargs): 
    super(SurfaceUpdateForm, self).__init__(*args, **kwargs) 
    self.fields['surface'].choices = [('', _('Please choose a surface'))] + MyModel.SURFACE_CHOICES