2016-05-07 5 views
0

views.pyPass request.user.id von Hinblick auf Form nicht funktioniert :(

def RealStateView(request): 
    form = RealStateForm(request.user) 

forms.py

class RealStateForm(forms.ModelForm): 
def __init__(self, *args, **kwargs): 
    request = kwargs.pop('request') 
    super(RealStateForm, self).__init__(*args, **kwargs) 
    self.fields['user_id'].initial = request.user.id 


class Meta: 
    model = RealState 
    exclude = ["owner"] 
    fields = '__all__' 

def clean_acquisition_value(self): 
    message = self.cleaned_data['acquisition_value'] 

    if message < 10: 
     raise ValidationError('No puede ser cero') 
    return message 

der Fehler sagt:

Exception Type: KeyError 
Exception Value: 'request' 

I Habe andere Möglichkeiten ausprobiert, ohne Erfolg zu haben .. Irgendwelche Idee?

+0

Wie lautet Ihr Formularcode? – ahmed

+0

Klasse RealStateForm (forms.ModelForm): def __init __ (selbst, * args, ** kwargs): anfrage = kwargs.pop ('request') super (RealStateForm, selbst) .__ init __ (* args, ** kwargs .) self.fields [ 'user_id'] initial = request.user.id Klasse Meta: Modell = RealState ausschließen = [ "Besitzer"] Felder = '__all__' def clean_acquisition_value (Selbst-): message = self.cleaned_data ['acquisition_value'] wenn Nachricht <10: raise ValidationError ('No puede ser cero') Rückmeldung –

Antwort

2

Du bist kein Schlüsselwortargument namens "request" an den Konstruktor übergeben. Stattdessen übergeben Sie ein Positionsargument mit dem Wert request.user.

form = RealStateForm(request=request) 
+0

ok, und was wäre der richtige Weg dahin? –