为什么这个Django QuerySet没有返回任何结果?

时间:2017-03-30 14:18:12

标签: 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("-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 即可。据我所知,这将包括日期相同的结果。

在这种情况下,我得到了所有元素。所有元素都是在同一天创建的,但当然,在不同的时间,所以它们应该在几分钟内不同。在过滤 更大/更小 时,这种差异是否会被考虑在内?

1 个答案:

答案 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)等内容。

小心两个下划线__