Django,如何处理多个Form_Valids

时间:2017-07-17 08:40:14

标签: django inheritance django-class-based-views formview

我使用基于类的视图,我需要从不同的视图继承两个form_valids,例如。

Class A(FormView)

def form_valid()
Does some stuff
return super().form_valid


Class B(FormView)

def form_valid()
Does some more stuff
return super().form_valid

Class C(Class A, Class B):

def form_valid()
takes form A and B stuff and does some more stuff
return super().form_valid

我的C类只继承自第一个form_valid,因为这是一个大型项目,我试图避免不得不修改我继承的视图,以便能够只在C类中执行表单。

欢迎所有建议

1 个答案:

答案 0 :(得分:0)

这不是很好的做法。你可能需要重构很多东西。不要害怕。你不做某事的原因不仅仅是时间和精力,特别是如果它以代码质量为代价。

有关多重继承的信息,请参阅How does Python's super() work with multiple inheritance?

我的解决方案是将A和B视图的is_valid方法从视图中拉出来并转换为实用程序方法。然后根据需要在is_valids中为类A,B和C调用它们。