[英]Django - Convert value get from HTML select in POST request back to number before validate ModelForm
在我的模型中,我有一個從“選擇”中填充的字段,如下所示:
PRIORITY = (
(0, 'Low'),
(1, 'Medium'),
(2, 'High'),
)
priority = models.IntegerField(choices=PRIORITY, default=0)
因此在我的數據庫中,它將存儲為0、1或2。
此優先級字段將通過HTML select標簽顯示。 我正在使用instance.get__priority__display獲取優先級字段的顯示。
現在,我有一個模型表單,它將具有此優先級 :
class NewItemForm(forms.ModelForm):
class Meta:
model = Item
fields = ['priority']
在我看來,當用戶單擊一個按鈕時, views.py中的函數將采用用戶選擇的值並將其存儲在數據庫的新項目中。 但是我現在的問題是,因為我從POST請求獲得的值是Low,Medium或High ,而不是0、1或2,所以當我使用is_valid()時 ,它說我的表單無效並且無法創建新項目並將其存儲在數據庫中。
有什么辦法可以將HTML select標簽中的那些POST數據轉換回數字,就像我選擇的那樣,然后驗證我的ModelForm?
謝謝
好吧,無論是否使用get_priority_display
,都不應嘗試手動創建select元素。 您有Django表單; 它的兩個職責[*]之一是顯示該字段。 所以:
{{ form.priority }}
將為您提供選擇,並正確設置其內部和顯示值。 並認為
form.cleaned_data['priority']
將為您提供該字段的正確值。
[*]以及驗證
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.