Как вы получаете доступ к объекту запроса внутри django forms.py? - PullRequest
0 голосов
/ 28 декабря 2011

В частности, мне нужно получить доступ к объекту запроса внутри init метода объекта формы.Вот мой код:

class TagNamesField(forms.CharField):
    def __init__(self, user=None, *args, **kwargs):

        super (TagNamesField,self).__init__(*args,**kwargs)

        self.required = True
        self.widget = forms.TextInput(attrs={'size' : 50, 'autocomplete' : 'off'})
        self.max_length = 255
        self.label  = _('tags')
        #self.help_text = _('please use space to separate tags (this enables autocomplete feature)')
        self.help_text = _('Tags are short keywords, with no spaces within. At least %(min)s and up to %(max)s tags can be used.') % {
            'min': settings.FORM_MIN_NUMBER_OF_TAGS, 'max': settings.FORM_MAX_NUMBER_OF_TAGS
        }
        self.initial = self.request.session['previous_url']
        self.user = user

В принципе, я хочу инициализировать эту форму: self.initial = self.request.session['previous_url']

Есть идеи?Спасибо!

1 Ответ

1 голос
/ 28 декабря 2011

Формы и виджеты отделены от информации запроса дизайном . Простой способ сделать то, что вы хотите, - создать экземпляр формы следующим образом:

form = SomeForm(initial={'tags': self.request.session['whatever']})

Тем не менее, может быть целесообразнее создать пользовательскую форму , принимающую request в качестве дополнительного аргумента (предоставляя доступ к классу формы):

form = SomeForm(request=request)
...