Перечитал рецепт более подробно. Действительно интересная вещь, но мне она все же не подходит, так как у меня поле contragent вообще не показывается, там не может быть выбора, оно передается в шаблон с виджетом HiddenInput. А значение для него я передаю в initial. Поэтому, так как я никаких действий не буду делать перед тем как мне должно уже показать ограниченную выборку, то и js тут получается непричем. Мне просто нужно как-то задать значения для этого поля после того как данные из initial уже попадут в форму и до того как форма будет отдана в шаблон.
Попробовал написать такой код:
class EmailForm(Form):
contragent = IntegerField()
contact_person = ChoiceField()
def __init__(self, *args, **kwargs):
super(EmailForm, self).__init__(*args, **kwargs)
self.fields['contact_person'] = ChoiceField(choices=[ (r.id, str(r)) for r in Staff.objects.filter(contragent=self['contragent'].data)])
Но он не заработал. Т.е. форма отдается, но список выбора пустой. Видимо в момент когда выполняется метод init формы, доступа к данным из initial еще нет, или не знаю уж почему. Может я просто неправильно обращаюсь к данным.