代码之家  ›  专栏  ›  技术社区  ›  Dominic Rodger

为什么我的charfield没有得到vtextfield类?

  •  3
  • Dominic Rodger  · 技术社区  · 16 年前

    我有这样的表格:

    class DiaryEventForm(forms.Form):
      title = forms.CharField(max_length = 200)
    

    生成此HTML:

    <input id="id_title" type="text" name="title" maxlength="200" /> 
    

    这在管理中显示为非常狭窄(在这里我有一个使用此表单的自定义视图)。

    如果我有这样定义的模型:

    class DiaryEvent(BaseModel):
      title = models.CharField(max_length = 200)
    

    我得到这个HTML:

    <input id="id_title" type="text" class="vTextField" name="title" maxlength="200" />
    

    最优雅的上课方式是什么 vTextField 添加到我的表单?这个类似乎是普通文本输入的样式,所以我想使用它,而不是自己设计。

    3 回复  |  直到 16 年前
        1
  •  6
  •   Dominic Rodger    16 年前

    虽然@czarchic的回答有效(so+1), browsing the source 产生了这个解决方案,我更喜欢:

    from django.contrib.admin.widgets import AdminTextInputWidget
    
    class DiaryEventForm(forms.Form):
        title = forms.CharField(max_length = 200, widget = AdminTextInputWidget())
    
        2
  •  3
  •   czarchaic    16 年前

    您可以通过小部件添加属性

     class DiaryEventForm(forms.Form):
      title = forms.CharField(max_length = 200, widget=forms.TextInput(attrs={'class': 'vTextField'}))
    
        3
  •  -2
  •   Nike    16 年前

    你可以使用这个技巧。

    将字段与类一起放入DIV:

    <div class="vTextField">
    <label>
        {{ form.title }}
    </label>
    </div>
    

    下面是相应的css块:

    .vTextField label{
     your style here
    }
    

    在这种情况下,您不必在python中指定样式类。