Начальное значение поля Django Form на неудавшейся проверке

как я устанавливаю значение полевого элемента после того, как форма была отправлена, но привела проверку к сбою? например.

if form.is_valid():
    form.save()
else:
    form.data['my_field'] = 'some different data'

Я действительно не хочу помещать его в представление, хотя и имели бы его как часть класса формы.

Спасибо

7
задан John 12 March 2010 в 11:43
поделиться

2 ответа

В итоге я сделал

if request.method == 'POST':
    new_data = request.POST.copy()
    form = MyForm(data=new_data)
    if form.is_valid(): 
        form.save() 
    else: 
        new_data['myField'] = 'some different data'

Надеюсь, это кому-то поможет

6
ответ дан 6 December 2019 в 07:50
поделиться

В документации говорится:

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

Я не могу поверить, что ваш код работает. Но ладно. Исходя из документации, я бы сделал это так:

if request.method == 'POST':
    data = request.POST.copy()
    form = MyForm(data)
    if form.is_valid(): 
        form.save() 
    else: 
        data['myField'] = 'some different data'
        form = MyForm(initial=data)
16
ответ дан 6 December 2019 в 07:50
поделиться
Другие вопросы по тегам:

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