context_processor.py:
def max_min(request):
"""
some code. request required, because I need
calculate some information about each user
"""
return {'max': max, 'min':max}
forms.py:
class MaxMin(forms.Form):
my_field = forms.IntegerField(
min_value=min, max_value=max, required=True,
widget=forms.NumberInput(attrs={'class':'form-control',
'required': 'true'}))
所以,我在 context_processor.py (它在网站的所有页面上使用)中都有代码,我希望在 forms.py 中使用。但我不知道,如何导入和使用它。 max_min 需要请求,但在 forms.py 我没有。
是的,我知道,我可以在表单html中使用{{min}}
和{{max}}
,而不需要 forms.py ,但是我需要检查代码,值是什么?通过POST。
感谢。
更新
class MAxMin(forms.Form):
def __init__(self, req, *args, **kwargs):
super(MAxMin, self).__init__(*args, **kwargs)
self.request = req
def mymethod(self):
return max_min(self.request)
my_field = forms.IntegerField(
min_value=mymethod(), required=True,
widget=forms.NumberInput(attrs={'class':'form-control',
'required': 'true'}))
答案 0 :(得分:0)
在实例化时注入请求怎么样?
#views.py
form = MyForm(request)
#forms.py
def __init__(self, req, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.request = req
#somewhere in your form's body
max_min(self.request)
<强>更新强> 那么,你的情况似乎与我的预期不同 考虑这种方法:
class MAxMin(forms.Form):
my_field = forms.IntegerField(required=True,
widget=forms.NumberInput(attrs={'class':'form-control',
'required': 'true'}))
def __init__(self, req, *args, **kwargs):
super(MAxMin, self).__init__(*args, **kwargs)
self.fields['my_field'].min_value = max_min(req)