我在一个项目中有这个类,我正在尝试获取当前的一个元素。
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 即可。据我所知,这将包括日期相同的结果。
在这种情况下,我得到了所有元素。所有元素都是在同一天创建的,但当然,在不同的时间,所以它们应该在几分钟内不同。在过滤 更大/更小 时,这种差异是否会被考虑在内?
答案 0 :(得分:0)
如果您不仅要按日期过滤,还要按时间过滤,则必须将模型中的相关字段更改为DateTimeField
而不是DateField
。
像这样:
from django.db import models
class MyModel(models.Model):
date_time = models.DateTimeField()
现在,您可以执行all_guides.filter(date_time__lte=self.date_time)
或all_guides.filter(date_time__gte=self.date_time)
等内容。
小心两个下划线__
。