我正在调用我的表单,附加参数'validate:
form = MyForm(request.POST, request.FILES, validate=True)
我应该如何编写表单的 init 方法来访问表单体内的这个参数(例如在_clean方法中)?这就是我想出的:
def __init__(self, *args, **kwargs):
try:
validate = args['validate']
except:
pass
if not validate:
self.validate = False
elif:
self.validate = True
super(MyForm, self).__init__(*args, **kwargs)
答案 0 :(得分:9)
validate=True
参数是关键字参数,因此它将显示在kwargs
dict中。 (只有位置参数显示在args
。)
您可以使用kwargs.pop尝试获取kwargs['validate']
的值。
如果validate
是kwargs
中的密钥,则kwargs.pop('validate')
将返回相关值。它还可以从'validate'
dict中删除kwargs
密钥,这样就可以调用__init__
。
如果validate
密钥不在kwargs
中,则会返回False
。
def __init__(self, *args, **kwargs):
self.validate = kwargs.pop('validate',False)
super(MyForm, self).__init__(*args, **kwargs)
如果您不希望在将'validate'
传递给kwargs
之前将其移除__init__
,只需将pop
更改为get
。