Ich versuche, einen Bereich für meine render zu erstellen, aber ich habe nur leere Abfrage, wenn ich now()
oder date.today()
für Filter Folge für Datum verwenden.Warum Datumsbereich leere Abfrage zurückgeben?
models.py:
class Episode(models.Model):
date = models.DateTimeField(null=True, default=now)
ich importieren Sie die gute Bibliothek für den Prozess:
from django.utils.timezone import now, timedelta
Ich denke, es ist die gute Art und Weise:
page = 0
n = now()
Episode.objects.filter(date__range=[n-timedelta(days=(5*page)), n-timedelta(days=(5*(page+1)))])
<QuerySet []>
Aber es hat nicht funktioniert ... Für Info: Datenbank haben Episoden und Werte, die datetime.datetime typisiert sind:
for e in Episode.objects.filter():
print(e.date)
2017-02-22 19:12:31.351811+00:00
2017-02-22 19:12:31.418354+00:00
2017-02-22 19:12:31.468889+00:00
2017-02-22 19:12:31.524925+00:00
2017-02-22 19:12:31.599978+00:00
2017-02-22 19:12:31.680029+00:00
2017-02-22 19:12:31.744071+00:00
2017-02-22 19:12:31.803611+00:00
2017-02-22 19:12:31.872156+00:00
2017-02-22 22:24:56.733546+00:00
2017-02-23 19:16:00.600644+00:00
Und als i-String direclty im Bereich verwenden, es ist Arbeit ...
Episode.objects.filter(date__range=['2017-02-22 19:12:31.351811+00:00','2017-02-22 19:12:31.744071+00:00'])
<QuerySet [<Episode: Episode object>, <Episode: Episode object>, <Episode: Episode object>, <Episode: Episode object>, <Episode: Episode object>, <Episode: Episode object>, <Episode: Episode object>]>
Ich versuche Variablen zu initialisieren, bevor zu ...
n = now()
page = 0
startDate = n-timedelta(days=5*page)
endDate = n-timedelta(days=5*(page+1))
Episode.objects.filter(date__range=[startDate, endDate])
<QuerySet []>
Haben Sie eine idear haben Warum kann ich mit now
oder datetime
filtern und es funktioniert mit einer Zeichenfolge?
EDIT: Die Abfrage
print(Episode.objects.filter(date__range=[startDate, endDate]).query)
SELECT "table_episode"."id", "table_episode"."card_id", "table_episode"."date", "table_episode"."number", "table_episode"."title", "table_episode"."type_episode", "table_episode"."tag", "table_episode"."url_access" FROM "table_episode" WHERE "table_episode"."date" BETWEEN 2017-02-23 22:46:06.391779 AND 2017-02-18 22:46:06.391779
<QuerySet []>
Sie konnten die queryset Abfrage drucken und überprüfen Sie die generierten SQL für Hinweise: 'Druck Episode.objects.filter (date__range = [n-Timedelta (Tage = (5 * Seite)), n-Timedelta (Tage = (5 * (Seite + 1)))]). query " – alfredo138923
Dank Ihrer Antwort, ich denke nicht, dass ich das tun, ich füge es in den Hauptpost. – Buky
'endDate = n-timedelta (Tage = 5 * (Seite + 1))' endDate wird immer kleiner sein als startDate. Überprüfen Sie diese Bedingungen. Hoffe es hilft – alfredo138923