【问题标题】:Django Custom Setting Size Attribute on Model Form Not Working模型表单上的 Django 自定义设置大小属性不起作用
【发布时间】: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',))

【问题讨论】:

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

标签: django django-forms django-model-field


【解决方案1】:

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

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

【讨论】:

  • 抱歉,由于学习困难,有时我在解释文档时遇到问题。如果这对任何人没有任何帮助,请告诉我,我可以删除该问题。如果它仍然有用,那么我很乐意将它留在这里。
猜你喜欢
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 1970-01-01
  • 2012-11-27
相关资源
最近更新 更多