«Первоначальный» аргумент должен стоять первым при создании формы django? - PullRequest
0 голосов
/ 16 июля 2010

У меня есть этот рабочий код

f = SomeForm(request.POST)

Когда я пытался изменить его на

f = SomeForm(request.POST, initial={'spam', 4})

это не сработало, «исходный» не был выбран («спам» - ModelChoiceField), но когда я попытался

f = SomeForm(initial={'spam', 4})

это сработало (выбранное значение было правильным). Я что-то здесь упускаю? Если это имеет значение, то вот как выглядит init метод

def __init__(self, *a, **ka):
    super(SomeForm, self).__init__(*a, **ka)
    ....#more codes

Есть ли способ заставить исходные данные работать без удаления первого аргумента? Спасибо

РЕДАКТИРОВАТЬ: он не должен быть «начальным», если я могу добавить какое-то заранее определенное значение в ModelChoiceField. Условие = есть запрос.POST, но форма не была отправлена ​​(сообщение пришло с другой страницы)

Ответы [ 2 ]

1 голос
/ 21 июля 2010

Оказалось, мне нужно было только изменить атрибут данных.Используйте метод копирования, чтобы сделать QueryDict изменчивым

post = request.POST.copy()

f = SomeForm(post)
f.data['spam'] = 4
0 голосов
/ 16 июля 2010

Вам не нужно пропускать initial, если форма была размещена. Проверьте request.method и создайте соответствующий экземпляр формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...