繁体   English   中英

Django Crispy Forms:设置文本区域的行

[英]Django Crispy Forms: Set rows for Text Area

使用FormHelper()创建表单时,我的表单的文本区域(对于TextField s)太大:它们设置为 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, null=False, 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', css_class='form-group col-12')),
            # 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)  -->

使用FormHelper()创建Form时,表单的文本区域(对于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, null=False, 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', css_class='form-group col-12')),
            # 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)  -->

使用FormHelper()创建Form时,表单的文本区域(对于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, null=False, 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', css_class='form-group col-12')),
            # 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)  -->

很多方法可以实现这一点,但您可以尝试使用 django 小部件。

text = forms.CharField(
        widget=forms.Textarea(attrs={"rows": 7, "cols": 40}),
        label="Custom field label.",
    )

然后在酥脆的 forms 布局中按名称调用您的字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM