Проблема наследования формы Джанго - PullRequest
1 голос
/ 03 марта 2010

Почему я не могу это сделать?

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)

Точнее, почему не могут формы. CharField захватывает тестер переменных, который я установил во время создания?

Мне кажется, что я что-то упускаю из-за того, как Python обрабатывает подобные вещи ...

редактировать :

То, что я на самом деле пытаюсь сделать, это:

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__ или иным образом?

Ответы [ 3 ]

2 голосов
/ 03 марта 2010

То, что у вас есть, не работает, потому что ваш CharField создается и на него указывает UserProfileConfig.username при создании класса, а не при создании экземпляра.self.tester не существует, пока вы не вызовете __init__ во время создания экземпляра.

1 голос
/ 03 марта 2010

Вы можете просто сделать это таким образом

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 голосов
/ 21 мая 2010

Вы можете сделать это: -

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...