Задать вопрос
@YuriyCherniy

Как сделать аргумент choices поля TypedChoiceField в форме динамически изменяемым?

Пытаюсь сделать приложение - редактор главной страницы сайта-витрины. На главной странице должно отображаться максимум 9 товаров. Но пользователю хочу выводить выбор с номерами позиций не больше, чем номер следующей доступной ячейки. Допустим, пользователь добавил уже 3 товара, значит для выбора должно выводится максимально 4 позиция, три позиции для замены и четвёртая для нового товара.
class ItemOnMainPageForm(forms.Form):
    item_on_main_page = forms.ModelChoiceField(
        queryset=Item.objects.all(),
        label='Выберете товар'
    )
    position = forms.TypedChoiceField(
        choices=[
            (1, 1), (2, 2), (3, 3),
            (4, 4), (5, 5), (6, 6),
            (7, 7), (8, 8), (9, 9)
        ],
        coerce=int,
        label='Позиция на главной'
    )

Текущая реализация позволяет выводить сразу все 9 ячеек для выбора. Какой подход можно использовать для изменения этого поведения и заставить поле position быть динамическим и соответствовать состоянию системы? Подозреваю, что надо использовать какой-то обходной путь, так как класс читается один раз при старте сервере, но какой?
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
alternativshik
@alternativshik
в __init__
self.fields['position'].choices =
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы