Django отправляет ключ или значение из представления в класс формы - PullRequest
0 голосов
/ 15 ноября 2011

Я пишу форму редактирования, где некоторые поля уже содержат данные. Пример:

class EditForm(forms.Form):
    name = forms.CharField(label='Name', 
                           widget=forms.TextInput(), 
                           initial=Client.objects.get(pk=??????)) #how to get the id?

То, что я сделал для другой формы, было следующим (что не работает в случае предыдущей EditForm):

class AddressForm(forms.Form):
    address = forms.CharField(...)

    def set_id(self, c_id):
        self.c_id = c_id

    def clean_address(self):
        # i am able to use self.c_id here

views.py

form = AddressForm()
form.set_id(request.user.get_profile().id) # which works in the case of AddressForm

Так, каков наилучший способ передать идентификатор или значение в форму, и это можно использовать во всех формах для этого сеанса / пользователя? Второе: правильно ли использовать начальное значение для заполнения поля формы так, как я пытаюсь это сделать?

1 Ответ

0 голосов
/ 15 ноября 2011

Вам необходимо переопределить метод __init__ для вашей формы, например, так:

def __init__(self, *args, **kwargs):
    try:
        profile = kwargs.pop('profile')
    except KeyError:
        super(SelectForm, self).__init__(*args, **kwargs)
        return
    super(SelectForm, self).__init__(*args, **kwargs)
    self.fields['people'].queryset = profile.people().order_by('name')

и, очевидно, построить свою форму, передавая нужный параметр при необходимости:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...