0
我迷失在這裏,無法弄清楚我錯過了什麼,這可能是愚蠢的,但我需要另一組眼睛,因爲就我而言可以告訴這應該工作。Django form.save()沒有采取更新的形式.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
你可以嘗試新的編輯?我做了重大改變,因爲我覺得第一個答案不是正確的路要走。由於您正在「清理」並驗證電話號碼,因此我們應該使用自定義驗證。 –