我有一个django创建视图,我想调用表单类的__init__
,我不知道该怎么做。
class PersonCreateView(CreateView):
model = Person
form_class = PersonForm
在表单类中,我做了一些逻辑来重新定义某些组合的查询集。我的问题是,我不知道如何调用__init__
PersonForm
方法或任何其他方法
提前感谢您的帮助。
答案 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视图,它的工作方式相同。
我看到丹尼尔打败了我的答案,也许他的更多是你正在寻找的。无论如何,希望这至少有点帮助!