0
我試圖編輯某人創建的一些舊代碼,這是一個帶有產品的迷你電子商務類型頁面。這個想法是,如果有人將一種產品添加到他們的購物車中,他們不能再添加一個產品,也不會涉及數量。Django對錯誤的對象進行驗證?
你會注意到下面的代碼,前面的人已經爲每個項目設置了一個會話。我想確保用戶無法兩次選擇相同的項目,因此我想測試以確定會話是否已經存在,並在會話確實存在的情況下引發表單驗證錯誤。下面的代碼不起作用,問題是當它發現第一個True條件時它似乎拋出ValidationError,所以沒有其他條件被檢查。例如 - 如果我已經在我的購物車中添加「home_options」,然後選擇「我的購物車中不存在」的「advanced_options」,即使「advanced_options」不在我的購物車中,也會引發forms.ValidationError, 「中間和那也沒有工作,任何建議?
def clean(self):
err = _("You already have this item in your cart.")
if self.request:
try:
if self.request.session['home_options']:
raise forms.ValidationError(err)
if self.request.session['value_home_options']:
raise forms.ValidationError(err)
if self.request.session['super_options']:
raise forms.ValidationError(err)
if self.request.session['advanced_options']:
raise forms.ValidationError(err)
if self.request.session['advanced_highspeed_options']:
raise forms.ValidationError(err)
except KeyError:
pass # only gets here if the session does not exist, add the item to the cart in this case.
丹尼爾,我欠你一瓶啤酒,你回答了我的兩個問題,明顯的疏忽,但是謝謝,我討厭在這個舊代碼中黑客:( – JeffC