我想使用CSS为我的表单提供更好的反馈。我已经在做了,但这只是一个干净的代码问题。我有很多ModelForms
,我希望所有这些都以相同的方式运行,所以我认为应该有办法避免重复代码进行验证。
我创建了一个覆盖ModelForm
class ModelFormCSS(forms.ModelForm):
def is_valid(self):
# run the parent validation first
valid = super(-->ParentModelForm<--, self).is_valid()
if not valid:
for f_name in self.errors:
classes = self.fields[f_name].widget.attrs.get('class', '')
if not "errors" in classes:
classes += ' errors'
self.fields[f_name].widget.attrs['class'] = classes
return valid
# all good
return True
我的问题在于运行父验证,因为我不知道如何获取父表单...是不是有办法从self
获取它?
答案 0 :(得分:5)
你误解了继承在Python中是如何工作的。在super
方法中,您必须始终调用当前类:
valid = super(ModelFormCSS, self).is_valid()