0
我有TransactionForm如下:Django的:類型錯誤:「datetime.date」對象有沒有屬性「得到」
class TransactionForm(ModelForm):
start_date = forms.DateField(widget=SelectDateWidget)
duration = forms.ChoiceField(choices=duration_choices)
class Meta:
model=Transaction
fields=(
'start_date',
'duration',
)
def clean(self):
date = self.cleaned_data.get("start_date")
if date < datetime.date.today():
raise forms.ValidationError("The date cannot be in the past!")
return date
它有乾淨的方法,檢查如果輸入的日期至少是今天或更大。當插入過去的某個日期時,它會按照預期顯示移除的錯誤。但是當輸入有效的日期時,我收到以下錯誤。
'datetime.date' object has no attribute 'get'
這裏是我的view.py文件
def packages(req):
if req.method == 'POST':
form = completeForm(req.POST)
tf = TransactionForm(req.POST)
if tf.is_valid():
return HttpResponse("Some page")
else:
errorList = tf.errors['__all__']
args={'form':form, 'errors':errorList, 'tf':tf}
return render(req,'main/common/packages.html',args)
else:
form = completeForm()
tf = TransactionForm()
args={'form':form, 'counter':1, 'tf':tf}
return render(req,'main/common/packages.html',args)
如果我從表單中刪除乾淨的方法,它工作正常,但我需要驗證日期時不使用JavaScript驗證。
我發現this問題最接近我的,但其解決方案不工作或我。你能否請我做錯什麼?
嗨Mxle,非常感謝您的快速回復。這是工作。但是,請你解釋爲什麼當我重寫乾淨的方法時它不工作?究竟是什麼造成了這裏的不同? –
我的想法是因爲你使用_date_單詞作爲變量。使用這些詞(和,列表,字典等)可能會導致各種不可思議的錯誤。 – mxle