Как изменить значение отправленных данных формы, используя объект формы, и снова отобразить его? - PullRequest
10 голосов
/ 09 июля 2010

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

1 Ответ

22 голосов
/ 09 июля 2010

Если данные поступают из запроса (как в случае, если вы используете представление), словарь 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...