I Transaction haben wie folgt:Django: Typeerror: ‚datetime.date‘ Objekt hat kein Attribut ‚get‘
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
es eine Methode sauber hat, die, wenn das Datum eingegeben prüft mindestens heutige oder mehr beträgt. Wenn ein Datum in der Vergangenheit eingefügt wird, zeigt es einen Fehler bei remplate wie erwartet. Aber wenn ein gültiges Datum eingegeben wird, erhalte ich den folgenden Fehler.
'datetime.date' object has no attribute 'get'
Hier ist meine view.py Datei
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)
Wenn ich saubere Methode aus Form entfernen es funktioniert gut, aber ich brauche Datum auswerten, ohne JavaScript-Validierung zu verwenden.
Ich fand this Frage am nächsten bei mir, aber seine Lösung funktioniert nicht oder ich. Könntest du bitte, was mache ich falsch?
Hallo Mxle, Vielen Dank für Ihre schnelle Antwort. Es funktioniert. Könntest du mir bitte erklären, warum es nicht funktioniert hat, als ich die saubere Methode außer Kraft gesetzt habe? Was genau hat hier den Unterschied gemacht? –
Meine Idee ist, dass Sie _date_ Wort für eine Variable verwendet haben. Die Verwendung solcher Wörter (und Liste, Diktat usw.) kann alle möglichen magischen Fehler verursachen. – mxle