模型表单上的 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 自定义设置大小属性不起作用的主要内容,如果未能解决你的问题,请参考以下文章