gpt4 book ai didi

python - 在 django admin 中控制 TextArea 小部件的大小

转载 作者:IT老高 更新时间:2023-10-28 21:58:32 29 4
gpt4 key购买 nike

我设法用两种不同的方式覆盖了 django 管理界面中 TextArea 小部件的外观:

使用 formfield_overrides

admin.py中:

class RulesAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': Textarea(
attrs={'rows': 1,
'cols': 40})},
}

...
admin.site.register(Rules, RulesAdmin)

这种方式有点矫枉过正,因为它会改变所有的 TextField型号。

使用自定义表单:

forms.py 中:

from django.forms import ModelForm, Textarea
from TimePortal.models import Rules


class RulesModelForm(ModelForm):
class Meta:
model = Rules
widgets = {
'parameters': Textarea(attrs={'cols': 30, 'rows': 1}),
}

admin.py

from AppName.forms import RulesModelForm

class RulesAdmin(admin.ModelAdmin):

form = RulesModelForm

两种解决方案都会调整 TextArea 的大小。然而,在这两种解决方案中的实际大小文本区域超过 1 行(实际上是 2 行)。以下是呈现的 HTML 的样子:

    <div class="form-row field-parameters">
<div>
<label for="id_parameters" class="required">Parameters:</label>
<textarea id="id_parameters" rows="1" cols="30" name="parameters">{}</textarea>
<p class="help">Enter a valid Python Dictionary</p>
</div>
</div>

这是一个截图:

Form

根据W3C referecnce for text area :

The size of a textarea can also be specified by the CSS height and width properties.

所以,我的问题是:

  • 是django自己的css主题负责这里的“奇数”这个小部件的行为?
  • 有人可以提出解决此问题的方法吗?

最佳答案

这是一个特定于浏览器的问题。

根据线程Height of textarea does not match the rows in Firefox :

Firefox always adds an extra line after the textfield. If you want it to have a constant height, use CSS ...

你可以设置textarea的style属性:

from django.db import models
from django.forms import Textarea

class RulesAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': Textarea(
attrs={'rows': 1,
'cols': 40,
'style': 'height: 1em;'})},
}

适合我 - 在 Firefox v. 23 和 Chrome v. 29 上测试。

希望对您有所帮助。

关于python - 在 django admin 中控制 TextArea 小部件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18738486/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com