我正在使用基于类的通用视图。
class MyView(UpdateView):
model = MyModel
success_url = "/test/list"
现在这很好。
但我想创建父类,以便我的所有视图都从它继承并定义success_url
就像这样
class MyMixin(object):
def __init__(self, *args, **kwargs):
self.success_url ="/test/list?myvar=true"
然后
class MyView(UpdateView, MyMixin):
model = MyModel
success_url = "/test/list"
但我的success_url
未被覆盖
答案 0 :(得分:0)
这是因为您没有修改实例变量,而是修改同名的局部变量。
答案 1 :(得分:0)
像@phoenix建议的那样,在你的类myView中,按如下所示创建一个MyMixin实例
class myview(updateview,MyMixin):
myVar=MyMixin("a") #just an e.g
print myVar.success_url
输出: /测试/列表?MYVAR =真
答案 2 :(得分:0)
我会这样做。
class MyMixinView(object):
def get_success_url(self):
return "/test/list"
class ChildUpdateView(UpdateView, MyMixinView):
model = MyModel
HTH ..
答案 3 :(得分:0)
您必须将myMixin
放在Updateview
之前,因为Updateview已经有get_success_url。
这应该有效
class MyMixin(object):
def get_success_url(self):
return "/test/list"
class MyView(MyMixin, UpdateView):
model = MyModel