【问题标题】:Django: Insert choice is neglected in form initDjango:在表单初始化中忽略插入选择
【发布时间】:2013-05-04 01:36:55
【问题描述】:

在我的模型中,我有一个 CharField,有几个选择:

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

我想避免在表单的下拉框中选择-------,并将其替换为更具描述性的文本。

我曾经在forms.py__init__ method 中使用以下行

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

但是,在我当前的应用程序中,第一行仍然是-------,并且没有被上面所述的文本替换。有没有更好的方法来设置空白值?

【问题讨论】:

    标签: django forms field


    【解决方案1】:

    出现-------是因为你的字段有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
    

    【讨论】:

      猜你喜欢
      • 2013-04-06
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 2018-12-24
      • 2020-04-14
      • 1970-01-01
      • 2013-12-03
      相关资源
      最近更新 更多