Django CreateView - 如何调用表单类__init__?

时间:2016-06-28 13:28:34

标签: python django forms

我有一个django创建视图,我想调用表单类的__init__,我不知道该怎么做。

class PersonCreateView(CreateView):
    model = Person
    form_class = PersonForm

在表单类中,我做了一些逻辑来重新定义某些组合的查询集。我的问题是,我不知道如何调用__init__

PersonForm方法或任何其他方法

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

你不应该自己打电话。您可以覆盖get_form_kwargs以提供额外的参数以传递给表单实例化。

class PersonCreateView(CreateView):
    model = Person
    form_class = PersonForm

    def get_form_kwargs(self, *args, **kwargs):
        form_kwargs = super(PersonCreateView, self).get_form_kwargs(*args, **kwargs)
        form_kwargs['my_extra_queryset_param'] = get_my_extra_queryset()
        return form_kwargs

答案 1 :(得分:0)

当实例化对象的新实例时,类实际上会自动调用 init 方法。

考虑以下示例:

class House():
    __init__(self,x,y):
        self.x = x
        self.y = y
        self.z = x*y

要致电 init ,我们只需执行以下操作:

h = House(5,7)

这将创建对象并自动调用 init 功能。对于django视图,它的工作方式相同。

我看到丹尼尔打败了我的答案,也许他的更多是你正在寻找的。无论如何,希望这至少有点帮助!