2011-06-13 10 views
11

¿Cómo pasaría un objeto de usuario o una solicitud a mi formulario para su validación?Pasar a un usuario, solicitud a los formularios

Por ejemplo, quiero ser capaz de hacer algo como esto -

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? 

Gracias.

Respuesta

27

Sólo tiene que pasar en el constructor y almacenarlo como una variable de instancia:

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 
     ... 

En su opinión:

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

Y si se utiliza un punto de vista basado en clases (una CreateView en este ejemplo):

class MyCreateView(CreateView): 

    ... 

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

extraño, pero esto no funciona: NameError: name 'request' no está definido –

Cuestiones relacionadas