Python 为什么这个Django查询集没有返回结果?
我在一个项目中有这个类,我正在尝试获取当前类的上一个和下一个元素Python 为什么这个Django查询集没有返回结果?,python,django,django-queryset,Python,Django,Django Queryset,我在一个项目中有这个类,我正在尝试获取当前类的上一个和下一个元素 def get_context(self, request, *args, **kwargs): context = super(GuidePage, self).get_context(request, *args, **kwargs) context = get_article_context(context) all_guides = GuidePage.objects.all().order_by
def get_context(self, request, *args, **kwargs):
context = super(GuidePage, self).get_context(request, *args, **kwargs)
context = get_article_context(context)
all_guides = GuidePage.objects.all().order_by("-date")
context['all_guides'] = all_guides
context['next_guide'] = all_guides.filter(date__lt=self.date)
context['prev_guide'] = all_guides.filter(date__gt=self.date)
print context['next_guide']
print context['prev_guide']
return context
这两条线:
context['prev_guide'] = all_guides.filter(date__lt=self.date)
context['next_guide'] = all_guides.filter(date__gt=self.date)
正在返回控制台中打印的空结果:
(QuerySet[])
(QuerySet[])
我错过了什么
编辑:
我将lt和gt更改为lte和gte。据我所知,这将包括日期相同的结果
在这种情况下,我得到了所有元素。所有元素都是在同一天创建的,但是,当然,在不同的时间,所以它们应该在几分钟内有所不同。在筛选较大/较小的时是否没有考虑到这一差异?如果不仅要按日期筛选,还要按时间筛选,则必须将模型中的相关字段更改为
日期时间字段
,而不是日期字段
像这样:
from django.db import models
class MyModel(models.Model):
date_time = models.DateTimeField()
现在,您可以执行类似于所有指南.filter(date\u time\u lte=self.date\u time)
或所有指南.filter(date\u time\u gte=self.date\u time)
小心两个下划线
\uuu
在哪里声明了self.date
?我想它指的是当前元素日期?也许我错了,我是Python/Django的新手,请展示整个类定义。还有,您指的是什么当前元素日期?您是指当前日期,比如2017年3月30日?我是指当前元素的日期字段值。这是元素创建的日期。当我打印日期时,它实际上返回了正确的值。我不认为日期字段是问题所在,所以,当您打印(self.date)
时,您实际上得到了一个日期,对吗?