模型表单上的 Django 自定义设置大小属性不起作用

Posted

技术标签:

【中文标题】模型表单上的 Django 自定义设置大小属性不起作用【英文标题】:Django Custom Setting Size Attribute on Model Form Not Working 【发布时间】:2020-02-28 10:55:03 【问题描述】:

我正在尝试在模型字段中指定字符长度。我无法让它在页面上呈现并将 size 属性放入输入字段。

基本形式如下:

class QuestionForm(ModelForm):
question = forms.CharField(label="Question")

class Meta:
    model = Question
    fields = ["question"]

我尝试了以下方法:

class QuestionForm(ModelForm):
question = forms.CharField(label="Question",widgets=forms.TextInput(attrs='size':'50'))

class Meta:
    model = Question
    fields = ["question"]

class QuestionForm(ModelForm):
question = forms.CharField(label="Question")

class Meta:
    model = Question
    fields = ["question"]
    widgets = 
        'question': forms.TextInput(attrs='size':'50')
    

类 QuestionForm(ModelForm): question = forms.CharField(label="Question")

def __init__(self, *args, **kwargs):
    super(QuestionForm,self).__init__(*args, **kwargs)
    self.fields['question'].widget.attrs['size'] = '50'

表单是表单集工厂的一部分,使用时需要做不同的事情吗?

ApplicationForm = forms.formset_factory(QuestionForm)
ModelApplicationForm = forms.modelformset_factory(Question, fields=('question',))

【问题讨论】:

如何在模板中显示此字段?你实际上看到了什么?还显示视图的其余部分;我看不出这两个表单集是如何相互关联的。 谢谢,我已经找到了解决方案,我会发布它作为答案。 【参考方案1】:

问题是因为在使用 modelformset_factory 时,我传入的是问题模型而不是表单,所以它根本没有使用表单类。我设法找到了将小部件传递给 modelformset_factory 的解决方案。

ModelApplicationForm = forms.modelformset_factory(Question, fields=('question',),widgets="question": forms.TextInput(attrs='size':'50'))

【讨论】:

抱歉,由于学习困难,有时我在解释文档时遇到问题。如果这对任何人没有任何帮助,请告诉我,我可以删除该问题。如果它仍然有用,那么我很乐意将它留在这里。

以上是关于模型表单上的 Django 自定义设置大小属性不起作用的主要内容,如果未能解决你的问题,请参考以下文章

添加中间表单后,Django 管理站点操作不起作用

将模型范围的帮助文本添加到 django 模型的管理表单

如何使用django自定义表单保存多个到多个字段

如何在 django 模型表单中添加自定义字段?

如何在 Django 管理员中为模型字段使用自定义表单字段?

根据值在 Admin 中自定义 Django 表单字段