2011-06-13 20 views
11

बनाने का अनुरोध मैं उपयोगकर्ता ऑब्जेक्ट को पास करने या सत्यापन के लिए मेरे फॉर्म के अनुरोध को कैसे पास करूं?उपयोगकर्ता को पास करने,

उदाहरण के लिए, मैं इस तरह कुछ करने के लिए सक्षम होना चाहते हैं -

class Form(forms.Form): 
    ... 
    def clean(self) 
     user = request.user # how to get request.user here? 
     user = User   # how to pass the actual User object? 

धन्यवाद।

उत्तर

27

बस निर्माता में इसे पारित और एक उदाहरण चर के रूप में संग्रहीत:

class MyForm(forms.Form): 
    def __init__(self, *args, **kwargs): 
     self.request = kwargs.pop("request") 
     super(MyForm, self).__init__(*args, **kwargs) 

    def clean(self): 
     print self.request.user 
     ... 

आपके विचार में:

form = MyForm(..., request=request) 

और अगर (इस उदाहरण में एक CreateView एक वर्ग आधारित दृश्य का उपयोग):

class MyCreateView(CreateView): 

    ... 

    def get_form_kwargs(self): 
     kwargs = super(MyCreateView, self).get_form_kwargs() 
     kwargs.update({'request': self.request}) 
     return kwargs 
+1

अजीब लेकिन यह काम नहीं करता है: नाम त्रुटि: नाम 'अनुरोध' परिभाषित नहीं किया गया है –

संबंधित मुद्दे