#django #django-admin #django-forms
#django #django-администратор #django-формы
Вопрос:
У меня есть простая форма, в которой пользователи могут выбрать отдел из поля выбора.
Это моя форма :
class NewDealForm1(forms.Form):
department = forms.ChoiceField(choices = map(lambda x:('%s'% x.id, '%s' % x.title),Department.objects.all()))
Всякий раз, когда я добавляю новый отдел от администратора, в моем поле выбора не отображается новый отдел, если я не перезапущу свой сервер.
Как я могу отобразить все отделы без перезапуска сервера?
Ответ №1:
Вместо использования a forms.ChoiceField
вы должны попробовать a forms.ModelChoiceField
, который принимает набор запросов напрямую.
Документы: https://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield
Пример
class NewDealForm1(forms.Form):
department = forms.ModelChoiceField(queryset=Department.objects.all()))
Ответ №2:
Ответ Вольфа правильный.
Но чтобы ответить на ваш вопрос напрямую («Повторное заполнение поля выбора Django без перезапуска сервера»), вам нужно будет задать параметры в вашем конструкторе формы. Вот пример динамического выбора года кредитной карты.
class NewDealForm1(forms.Form):
year = forms.ChoiceField(choices=[]))
def __init__(self, *args, **kwargs):
super(NewDealForm, self).__init__(*args, **kwargs)
year = datetime.date.today().year
self.fields['year'].choices = [(x, x) for x in range(year, year 10)]