Probleme filtern django datetime-Feld mit Monat und Tag

Kann mir jemand erklären warum der folgende Filter nicht auf den Monat und den Tag-Ebene? Filterung von Jahr zu funktionieren scheint, aber nicht die anderen beiden.

>>> clicks.count()
36
>>> date = clicks[0].created
>>> date.month
2
>>> date.year
2014
>>> date.day
1
>>> clicks.filter(created__month=2)
[]
>>> clicks.filter(created__month=02)
[]
>>> clicks.filter(created__month='02')
[]
>>> clicks.filter(created__month='2')
[]
>>> clicks.filter(created__month=date.month)
[]
>>> clicks.filter(created__day=date.day)
[]

Ein schnelles update, um zu demonstrieren, dass ich immer das gleiche Verhalten vor der Erstellung und der Umgang mit einem queryset:

>>> clicks = PreviewClick.objects.filter(created__month = 2)
>>> clicks.count()
0
>>> clicks = PreviewClick.objects.filter(created__month = 02)
>>> clicks.count()
0
>>> clicks = PreviewClick.objects.filter(created__month = '02')
>>> clicks.count()
0
>>> clicks = PreviewClick.objects.filter(created__month = '2')
>>> clicks.count()
0

Hier mehr food for thought:

>>> clicks = PreviewClick.objects.all()
>>> counter = 0
>>> for click in clicks:
...      if click.created.month == 2:
...           counter += 1
... 
>>> counter
35
  • Wie hast du die Klicks?
  • Sind Sie sicher, Sie haben Klicks mit 'created' datiert von Feb? Ich habe gerade versucht diesen filter auf eine unserer Datenbanken, und es funktionierte gut für mich.
  • Es sieht aus wie Sie haben <Modell>.Objekte.alle() vergeben, die auf Klicks und dann versuchen zu filtern. Sie wahrscheinlich wollen zu tun <Modell>.Objekte.filter(....)
  • In der zweiten Zeile schnappte ich mir die aktuelle 'erstellt' - Wert für das erste Element in der queryset und zeigte, dass die Monat Wert ist in der Tat Februar. Also der filter sollte MINDESTENS einen Eintrag, richtig?
  • Können Sie uns zeigen, dass PreviewClick.objects.all() Objekte, die es in einem Monat 2
  • lol Ja, ich dachte, die gleiche Sache. Ich aktualisiert die Informationen, während Sie fragten.
  • Haben Sie versucht, einen Neustart Ihres Computers und zurücksetzen des Routers 🙂
  • Sie müssen nicht etwas Phantasie in Ihrem Modell haben Sie?
  • Ich habe genau das gleiche Problem wie du @zorrotmm. Django version 1.6.1 Python version 2.7.5 Mac OS Das Modell Feld, das ich verwende, ist Modelle.DateTimeField .filter(datetime__Jahr=2014) funktioniert .filter(datetime__Monat=2) nicht .filter(datetime__Tag=25) keine Werde aktualisieren, wenn ich eine Lösung finden.

InformationsquelleAutor zorrotmm | 2014-02-20
Schreibe einen Kommentar