使用Django crispy表单,如何缩小TextField的文本框?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Django crispy表单,如何缩小TextField的文本框?相关的知识,希望对你有一定的参考价值。

TextField列的酥脆表单的文本框对于我的应用来说太高了,它们占用了太多的屏幕空间。如果需要,用户可以通过拖动底部框架线使它们更高,但最小尺寸太高。我希望默认高度为4行左右。

我尝试了一些我从相关帖子中获得的想法,但没有任何效果 - 文本框仍然是相同的高度和太高。

这是我目前正在制作的模型:

class Brand(models.Model):
    cTitle          = models.CharField(
                        'brand name', max_length = 48, db_index = True)
    bWanted         = models.BooleanField(
                        'want anything from this brand?', default = True )
    bAllOfInterest  = models.BooleanField(
                        'want everything from this brand?', default = True )
    cLookFor        = models.TextField(
                        'Considered a hit if this text is found '
                        '(each line evaluated separately, '
                        'put different look for tests on different lines)',
                        null=True, blank = True )
    iStars          = IntegerRangeField(
                        'desireability, 10 star brand is most desireable',
                        min_value = 0, max_value = 10, default = 5 )
    cComment        = models.TextField( 'comments', null = True, blank = True )
    cNationality    = CountryField( "nationality", null = True )
    cExcludeIf      = models.TextField(
                        'Not a hit if this text is found '
                        '(each line evaluated separately, '
                        'put different exclude tests on different lines)',
                        null=True, blank = True )
    iLegacyKey      = models.PositiveIntegerField('legacy key', null = True )
    tLegacyCreate   = models.DateTimeField( 'legacy row created on',
                        null=True, blank = True )
    tLegacyModify   = models.DateTimeField( 'legacy row updated on',
                        null=True, blank = True )
    iUser           = models.ForeignKey( User, verbose_name = 'Owner',
                        on_delete=models.CASCADE )
    tCreate         = models.DateTimeField( 'created on', auto_now_add= True )
    tModify         = models.DateTimeField( 'updated on', auto_now    = True )
    #

    def __str__(self):
        return self.cTitle

    class Meta():
        verbose_name_plural = 'brands'
        ordering            = ('cTitle',)
        db_table            = verbose_name_plural

但只有这些字段在表单上:

tModelFields = (
    'cTitle',
    'bWanted',
    'bAllOfInterest',
    'cLookFor',
    'iStars',
    'cComment',
    'cNationality',
    'cExcludeIf' )

指导将不胜感激。

答案

由于您根据他们的文档使用crispy_forms,您可以使用Layouts来定义将添加到模板as it is explained here in the documentation的字段“元素”的某些属性。

在这种情况下,它将是这样的:Field('cExcludeIf', rows='4')

以上是关于使用Django crispy表单,如何缩小TextField的文本框?的主要内容,如果未能解决你的问题,请参考以下文章

Django:模板中的 Crispy 表单验证错误

使用Ajax验证并提交Django表单(django-crispy-forms)

使用 Django 模型表单 + 表单向导 + Crispy - 不进行第二步

使用内联表单在 django-crispy-forms 中呈现字段错误

如何使用 Ajax 渲染 django-crispy-forms 的验证错误?

Django Crispy 表单提交按钮