Устанавливание выбранного значения на Django формы. ChoiceField

Connect 4 - решенная игра (спойлер, игрок 1 выигрывает, когда играет идеально). Вы можете прочитать все о том, как решение было достигнуто в Основанный на знаниях подход Connect-Four . Это довольно увлекательное чтение, потому что они сделали это в то время, когда вычислительные ресурсы были значительно труднее найти.

Общая идея состоит в том, чтобы создать огромную базу данных с позициями известных значений, затем min-max с отсечкой альфа-бета, пока вы не достигнете одной из позиций в базе данных. Создание этой базы данных было сложным из-за вычислительных ресурсов и ресурсов хранения в то время, когда это происходило, но вы, вероятно, могли бы достичь чего-то подобного сегодня с меньшими усилиями.

Хотя это не дает прямого ответа на ваш вопрос, мы надеемся, что этот справочник станет хорошим местом для начала вашего исследования, поскольку он включает в себя анализ множества общих ситуаций в Connect 4, которые вы можете использовать для улучшения своей функции оценки.

105
задан daaawx 25 April 2019 в 22:04
поделиться

5 ответов

Попытайтесь установить начальное значение при инстанцировании формы:

form = MyForm(initial={'max_number': '3'})
107
ответ дан Tom 24 November 2019 в 03:57
поделиться

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

1
ответ дан Andrew Wilkinson 24 November 2019 в 03:57
поделиться

Я тоже столкнулся с этой проблемой, и выяснил, что проблема в браузере. Когда вы обновляете, браузер повторно заполняет форму теми же значениями, что и раньше, игнорируя отмеченное поле. Если вы посмотрите исходный код, вы увидите, что отмеченное значение верное. Или поместите курсор в поле URL-адреса вашего браузера и нажмите Enter. При этом форма будет загружена заново.

18
ответ дан 24 November 2019 в 03:57
поделиться

Дэйв - любая удача найти решение проблемы браузера? Есть ли способ заставить обновление?

как для оригинальной проблемы, попробуйте следующее при инициализации формы:

def __init__(self, *args, **kwargs):
  super(MyForm, self).__init__(*args, **kwargs)   
  self.base_fields['MyChoiceField'].initial = initial_value
3
ответ дан 24 November 2019 в 03:57
поделиться

Вы также можете сделать следующее. в классе формы def:

max_number = forms.ChoiceField(widget = forms.Select(), 
                 choices = ([('1','1'), ('2','2'),('3','3'), ]), initial='3', required = True,)

затем при вызове формы в представлении вы можете динамически установить начальные варианты и список вариантов.

yourFormInstance = YourFormClass()

yourFormInstance.fields['max_number'].choices = [(1,1),(2,2),(3,3)]
yourFormInstance.fields['max_number'].initial = [1]

Примечание: начальные значения должны быть списком, а варианты выбора должны быть 2-кортежами, в моем примере выше у меня есть список из 2-кортежей. Надеюсь, это поможет.

41
ответ дан 24 November 2019 в 03:57
поделиться
Другие вопросы по тегам:

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