Django脆皮表单:为文本区域设置行 models.py: forms.py:产生的HTML:

问题描述

使用FormHelper()创建表单时,表单的文本区域(用于TextField)太大:它们设置为10行。我想设置行数。我该怎么办?

我的代码

models.py

from django.db import models

class Spam(models.Model).
    ham = models.CharField(max_length=10,blank=True,null=False,default='Some ham')
    eggs = models.TextField(blank=True,default='',verbose_name="Lots of eggs")

forms.py

from django import forms
from crispy_forms.helper import FormHelper
from crispyy_forms.layout import (Layout,Row,Column)

from .models import Spam

class SpamForm(forms.ModelForm):
    class Meta():
        model = Spam
        fields = ('ham','eggs')
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.helper = FormHelper()
        self.helper.form_method = 'POST'
        self.helper.layout = Layout(
            Row(Column('ham',css_class='form-group col-12')),Row(Column('eggs',# HERE: How can I set the rows for the text area widget?
        )

产生的HTML:

<!-- (ommited for brevity)  -->
<div  class="form-row " > 
  <div class="form_group col-12"  rows="2">
    <div id="div_id_eggs" class="form-group">
      <label for="eggs" class="">Lots of eggs</label> 
      <div class=""> 
          <textarea name="eggs" cols="40" rows="10" class="textarea form-control" id="eggs"></textarea> 
          <!--                            ^^^^^^^^
          <!--                            THIS is what I'd like to change to "2" -->
      </div>
    </div> 
  </div>
</div>
<!-- (ommited for brevity)  -->

解决方法

您需要更改TextArea字段正在使用的eggs小部件的属性。

class SpamForm(forms.ModelForm):
    # no changes here
    
    def __init__(self,*args,**kwargs):
        # No changes to your existing code,just add this:
        self.fields['eggs'].widget.attrs = {'rows': 2}
,

您可以通过在以下行中传递行来直接以酥脆形式“覆盖”行:

Row(Column('eggs',rows='2',css_class='form-group col-12')),

或带有字段:

Field('eggs',rows='2')

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...