Как я изменяю значение отправленных данных формы с помощью объекта формы и вновь отображаю его?

По существу я хочу санировать некоторые данные, которые пользователь отправляет в форме, когда я вновь отображаю их, если существует ошибка. Это легко сделать, если я извлекаю данные из объекта формы. Я могу переопределить чистое () метод и управлять данными. Я могу также установить .initial значение впервые, оно отображено. Однако я не могу найти способ управлять данными формы, которые идут во вновь отображенный на ошибке. Например, скажите, что пользователь отправляет номер телефона "123 456 тестовых тестов 7890”, я хочу смочь разделить неалфавитно-цифровые символы (который легок), и покажите им просто числа “1234567890” в поле формы.

10
задан stinkypyper 8 July 2010 в 20:16
поделиться

1 ответ

Если данные поступают из запроса (в том случае, если вы используете представление), словарь form.data будет QueryDict, который должен быть неизменяемым. К счастью, вы можете изменить его, скопировав его первым:

self.data = self.data.copy()
self.data['phone_number'] = 1234567890

Если вы изменяете непосредственно экземпляр формы, который не из запроса представления, вы можете изменить словарь form.data (таким образом это простой объект словаря) прямо так:

# Don't need to copy `data` first
self.data['phone_numer'] = 123456789
22
ответ дан 3 December 2019 в 17:56
поделиться
Другие вопросы по тегам:

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