python - Django 使用 Widget 覆盖 ModelForm 属性

标签 python django forms widget maxlength

我有一个标签CharField最大长度为 300,但我需要为默认输入保留 100 个字符,但我希望用户能够通过输入文本框设置剩余的 200 个字符。我这样做的目的是将模型中字符字段的最大长度设置为 300,并在我的表单中为输入创建一个小部件,将用户的输入限制为 200 个字符。

但是,我做了一些测试,发现我无法根据 charfield 本身的最大长度更改输入字段的最大长度。有谁知道如何做到这一点?

模型.py

class Video(models.Model):
    title = models.CharField(max_length=50)
    tags = models.CharField(max_length=200)

表单.py

class VideoForm(forms.ModelForm):

class Meta:
    model=Video
    fields=['title','description','authorId','tags','video','thumbnail']
    #a widget is django's representation of an html input element
    widgets = {
        'tags': forms.Textarea(attrs={'cols': 80, 'rows': 20,'maxlength':5}),
    }

以上代码生成的html文本区域是<textarea cols="80" id="id_tags" maxlength="200" name="tags" rows="20"></textarea> ,但我想要 maxlength为 5。

最佳答案

重写 VideoForm 的构造函数:

class VideoForm(forms.ModelForm):
    ...
    def __init__(self, *args, **kwargs):
        super(VideoForm, self).__init__(*args, **kwargs)
        self.fields['tags'].widget.attrs['maxlength'] = 5

关于python - Django 使用 Widget 覆盖 ModelForm 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27996056/

相关文章:

django - 我怎样才能在 Django 中拥有同一个模型的两个外键?

javascript - 通过 onsubmit 属性提交表单时 HTML5 模式验证不起作用

javascript - 在 Firefox 中从多个 Iframe 提交表单

python - Pandas:将操作应用于 MultiIndex 中的重复列

python - 如何仅更改图例字体而不影响 matplotlib 中的其他参数?

python - 如何填充 NAN "ignoring"索引?

Django:通过 Office365 发送电子邮件

python - 启动 docker-compose : python modules not installed 时出现问题

java - 是否存在提供任意深度嵌套以转换为 JSON 对象的 Java 类?

python - 在 Python 中将 LaTex 表读入数组