Я потерялся здесь и не могу понять, что мне не хватает, что, вероятно, что-то глупо, но мне нужен еще один набор глаз, потому что насколько я может сказать, что это должно работать.Django form.save() не принимает обновленный form.cleaned_data
То, что я пытаюсь сделать, это позволить моим пользователям вводить номера телефонов так, как они привыкли видеть, но затем принять этот ввод и получить подтвержденный международный номер телефона из Twilio и сохранить его. По определению это означает, что она будет в следующем формате - который формат мне нужно иметь его в базе данных таким образом, чтобы она хорошо взаимодействует с другой частью приложения:
+17085551212
Я отлажен до точки там я знаю, что значения поступают правильно, все работает правильно, если я получаю недопустимый номер и т. д. По какой-то причине обновленное значение не возвращается обратно в форму, когда я устанавливал form.cleaned_data ['office_phone'] до form.save(). Поэтому я получаю исходный номер (708) 555-1212 в базе данных.
forms.py
class ProfileForm(forms.ModelForm):
office_phone = forms.CharField(max_length=20, label="Office Phone")
views.py
if form.is_valid():
print (form.cleaned_data['office_phone'])
pn = form.cleaned_data['office_phone'].replace(" ","")
try:
response = validator.phone_numbers.get(str(pn))
form.cleaned_data['office_phone'] = str(response.phone_number)
print form.cleaned_data
form.save()
success_message = "Your changes have been saved"
except:
error_message = "The contact phone number you entered is invalid."
console.output
(708) 555-1212
+17085551212
+17085551212
{'office_phone': '+17085551212'}
<tr><th><label for="id_office_phone">Office Phone:</label></th>
<td><input id="id_office_phone" maxlength="20" name="office_phone" type="text" value="(708) 555-1212" /></td></tr>
Что я здесь отсутствует?
Как это будет обрабатывать ошибка, если валидатор возвращает 404 (неверный номер телефона) вместо возврата с действительным номером телефона? Кроме того, не уверен, что я понимаю, что ', если совершать: instance.save() возвращение instance' Пробовали так или иначе, и теперь она даже не кажется, что сохранение изменений. Да, спасение всегда терпит неудачу. собираюсь попробовать устранить неполадки, но не уверен. – f71316
Неисправность вышеизложенного и заставила его работать, но до сих пор не понимаю, почему. Можете ли вы объяснить, почему это работает здесь, а не просто иметь рабочий код в представлении? – f71316
Можете ли вы попробовать новое редактирование? Я внес серьезные изменения, потому что я чувствую, что первый ответ был неправильным. Поскольку вы «очищаете» и проверяете номер телефона, мы должны использовать специальную проверку. –