我该如何给ModelForm对象一个额外的参数,如下所示:
包含ModelForm对象
form = ChangeProfile(request.POST, initial={'first_name':costumer.first_name, 'last_name':costumer.last_name}, extraParameter)
以及如何在此类中获取extraParameter:
class ChangeProfile(ModelForm):
创建这样的构造师不是上帝的主意
def __init__(self, request, initial, extraParamter):
我在这里该怎么办?
最佳答案
对于这种情况,您需要覆盖__init__
。
但是,您的__init__
签名存在错误。
你应该做:
class ChangeProfile(ModelForm):
def __init__(self, *args, **kwargs):
self.extraParameter = kwargs.pop("extraParameter")
super(ChangeProfile, self).__init__(*args, **kwargs)
#any other thing you want
从视图:
extraParameter = "hello"
#GET request
form=ChangeProfile(initial={'first_name':costumer.first_name, 'last_name':costumer.last_name}, extraParameter=extraParameter)
#POST request
form=ChangeProfile(request.POST ,initial={'first_name':costumer.first_name, 'last_name':costumer.last_name}, extraParameter=extraParameter)