Вышеописанное не будет работать, поскольку определяемое здесь choices
будет взято из переменной с именем choices
при построении класса .
Однако вы можете сгенерировать:
<code>from django import forms
class OrderForm(forms.Form):
product_name = forms.ChoiceField(label='Product', choices=[])
def __init__(self, products=None, *args, **kwargs):
super(OrderForm, self).__init__(*args, **kwargs)
if products:
self.fields['product_name'].choices = [
(str(k), v)
for k, v in enumerate(products))
]/code>
Таким образом, вы затем создаете OrderForm
и передаете список (или любую итерируемую строку) через параметр products
, например:
def some_view(request):
form = OrderForm(<b>products=['product A', 'product B']</b>)
# ...
# return some HttpResponse</code>