2010-03-03 4 views
1

왜 내가이 작업을 수행 할 수 없습니까?Django 양식 상속 문제

from django import forms 
from django.forms import widgets 
class UserProfileConfig(forms.Form): 

    def __init__(self,*args,**kwargs): 
     super (UserProfileConfig,self).__init__(*args,**kwargs) 
     self.tester = 'asdf' 

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

은보다 구체적으로, 왜 캔트 forms.CharField 내가 건설시 설정 한 변수 테스터를 잡아? 내가 파이썬은 이런 종류의를 처리하는 방식에 대해 뭔가를 놓친 거지 같은 느낌

...

편집 :

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) 
:

내가 실제로 할 시도하고 이것이다

즉, 세션 변수를 잡고 초기 값으로 설정해야합니다 ...

방법이 있습니까? 이것을 __init__ 또는 다른 방법을 통해 처리 하시겠습니까?

답변

2

당신이있어하는 것은 작동하지 않습니다 수행하고 클래스가 생성 될 때, 인스턴스가 생성되지 때 UserProfileConfig.username가 가리키는 수 있습니다. self.tester은 인스턴스 생성시 __init__에 전화 할 때까지 존재하지 않습니다.

1

당신은 당신의 CharField가 생성됩니다 있기 때문에 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

이 작업을 수행 할 수 있습니다 : - 일반적으로 인정 방법이다

class UserProfileConfig(forms.Form): 

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


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

,하지만 당신이 할 수 있습니다 : -

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)