我该如何给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)

10-06 13:46