了解 UpdateView 以更改 Form 和 FormWidget
Understanding UpdateView to change the Form and FormWidget
我还是没看懂UpdateView。它从哪里获取表格?
它具有模型中声明的字段,但不使用 forms.py.
中定义的表单
但是我确实遵循了以下给出的答案:
How does one use a custom widget with a generic UpdateView without having to redefine the entire form?
在我的例子中,我在 model.py 中使用 IntegerField 并在表单中使用 Radiobuttons。
所以 UpdateView 所做的是给我一个 IntegerField 而不是 ChoiceField。即使我分配了 RadioSelect 小部件或选择字段:
观点:
class UpdateEinflussideen(UpdateView):
model = Einflussideen
EINFLUSS = [(10,'hoch'),(4,'mittel'),(1,'gering')]
form_class = forms.models.modelform_factory(Einflussideen,
widgets={'einfluss': forms.ChoiceField(
choices=EINFLUSS, widget=forms.RadioSelect())},
)
template_name = 'verbrauchererfassung/update_einflussideen.html'
success_url = reverse_lazy('verbraucher')
模特:
class Einflussideen(models.Model):
idee = models.CharField(max_length=100)
einfluss = models.IntegerField()
verbraucher = models.ForeignKey(Verbraucher)
python 中的变量区分大小写。将属性 form_Class
更改为 form_class
。此外,widgets
参数应包含一个字典,其值中包含 Widget
个实例:
form_class = forms.models.modelform_factory(Einflussideen,
widgets={'einfluss': forms.RadioSelect(choices=EINFLUSS)})
我还是没看懂UpdateView。它从哪里获取表格? 它具有模型中声明的字段,但不使用 forms.py.
中定义的表单但是我确实遵循了以下给出的答案:
How does one use a custom widget with a generic UpdateView without having to redefine the entire form?
在我的例子中,我在 model.py 中使用 IntegerField 并在表单中使用 Radiobuttons。
所以 UpdateView 所做的是给我一个 IntegerField 而不是 ChoiceField。即使我分配了 RadioSelect 小部件或选择字段:
观点:
class UpdateEinflussideen(UpdateView):
model = Einflussideen
EINFLUSS = [(10,'hoch'),(4,'mittel'),(1,'gering')]
form_class = forms.models.modelform_factory(Einflussideen,
widgets={'einfluss': forms.ChoiceField(
choices=EINFLUSS, widget=forms.RadioSelect())},
)
template_name = 'verbrauchererfassung/update_einflussideen.html'
success_url = reverse_lazy('verbraucher')
模特:
class Einflussideen(models.Model):
idee = models.CharField(max_length=100)
einfluss = models.IntegerField()
verbraucher = models.ForeignKey(Verbraucher)
python 中的变量区分大小写。将属性 form_Class
更改为 form_class
。此外,widgets
参数应包含一个字典,其值中包含 Widget
个实例:
form_class = forms.models.modelform_factory(Einflussideen,
widgets={'einfluss': forms.RadioSelect(choices=EINFLUSS)})