0

我正在使用基于类的通用视图。

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的没有被覆盖

4

4 回答 4

0

我会这样做。

class MyMixinView(object):

    def get_success_url(self):
        return "/test/list"

class ChildUpdateView(UpdateView, MyMixinView):
    model = MyModel

HTH..

于 2013-01-01T05:29:16.280 回答
0

就像@phoenix 建议的那样,在您的 myView 类中,创建 MyMixin 的实例,如下所示

class myview(updateview,MyMixin):
    myVar=MyMixin("a") #just an e.g
    print myVar.success_url

输出:/test/list?myvar=true

于 2012-12-31T08:05:29.363 回答
0

你必须把它放在myMixin前面,Updateview因为 Updateview 已经有 get_success_url。

这应该工作

class MyMixin(object):
    def get_success_url(self):
        return "/test/list"

class MyView(MyMixin, UpdateView):
    model = MyModel
于 2013-01-02T03:02:10.570 回答
0

那是因为您不是在修改实例变量,而是在修改同名的局部变量。

于 2012-12-31T06:00:55.287 回答