2010-03-03 7 views
1

Pourquoi je ne peux pas le faire? Plus précisément, pourquoi ne pas utiliser le formulaire.CharField saisir le testeur variable que j'ai défini pendant la construction?Problème d'héritage de formulaire Django

Je me sens comme je manque quelque chose sur la façon dont Python gère ce genre de chose ...

modifier:

Ce que je suis en train d'essayer de faire est la suivante:

class UserProfileConfig(forms.Form): 

    def __init__(self,request,*args,**kwargs): 
     super (UserProfileConfig,self).__init__(*args,**kwargs) 
     self.tester = request.session['some_var'] 

    username = forms.CharField(label='Username',max_length=100,initial=self.tester) 

En d'autres termes, je dois saisir une variable de session, puis la définir sur une valeur initiale ...

Y at-il un moyen pour gérer cela à travers le __init__ ou autrement?

Répondre

2

Qu'est-ce que vous avez ne fonctionne pas parce que votre CharField est créé, et pointée par UserProfileConfig.username lorsque la classe est créée, pas lorsque l'instance est créée. self.tester n'existe pas tant que vous n'avez pas appelé __init__ lors de la création de l'instance.

1

Vous pouvez juste faire this way

from django import forms 
from django.forms import widgets 
class UserProfileConfig(forms.Form): 
    username = forms.CharField(label='Username',max_length=100,initial=self.tester) 
    tester = 'asdf' 
0

Vous pouvez le faire: -

class UserProfileConfig(forms.Form): 

    username = forms.CharField(label='Username',max_length=100) 


def view(request): 
    user_form = UserProfileConfig(initial={'username': request.session['username',}) 

Quelle est la méthode généralement acceptée, mais vous pouvez aussi le faire: -

class UserProfileConfig(forms.Form): 

    def __init__(self,request,*args,**kwargs): 
     super (UserProfileConfig,self).__init__(*args,**kwargs) 
     self.fields['username'] = request.session['some_var'] 


    username = forms.CharField(label='Username',max_length=100) 


def view(request): 
    user_form = UserProfileConfig(request=request)