LINUX.ORG.RU

Вопрос по django.forms.ChoiceField

 ,


0

1

Как подставить choices (пункты выпадающего списка) в ChoiceField в момент создания экземпляра формы, а не в момент описания класса?

Допустим, есть форма

class MyForm(Form):
    client=ChoiceField(choices = choices)

Если переменную choices создать в данной области видимости до описания класса, всё работает. Но нужно описать класс в одном места, а потом создавать его объекты в другом, и choices создаётся при вызове конструктора. Как это можно сделать? Пробовал при помощи переопределения init:

class MyForm(Form):
...  def __init__(self, choices,  *args):
...   self.client=ChoiceField(choices = choices)
...   super(MyForm, self).__init__(*args)

Не работает, вообще данного поля нет.

☆☆☆☆☆

Последнее исправление: Ttt (всего исправлений: 1)

Ответ на: комментарий от gruy

Спасибо, вроде работает.

Для потомков: self.fields['field_name']… нужно вызывать после super…

Ttt ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Ttt

Ну конечно, а то у тебя вышло что ты сначала правишь поле, а потом изначальный конструктор его затирает. Надо наоборот.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.