Django按日期过滤

时间:2018-09-26 06:20:34

标签: django python-3.x

我有

Class Profile(models.Model)
    turn_off_date = models.DateTimeField(null= True, blank = True,auto_now = False)

我需要找到所有x天内的有效日期= 确切的配置文件记录。 我该怎么做呢? 我可以考虑遍历所有配置文件并手动比较日期,但这似乎无效

更新:

我需要按日期过滤,而不是像重复的问题一样按日期时间字段

现在我正在这样做:

profiles = Profile.objects.all()
for profile in profiles:
        if(profile.days_left() == x):
           print(profile.days_left())

在我的Profile模型中,我定义了一个方法:

def days_left(self):
        turn_off_date = self.turn_off_date

        days_left = (turn_off_date - datetime.now()).days
        if days_left < 0:
            days_left = 0
        return days_left

3 个答案:

答案 0 :(得分:0)

您可以使用range实现这一目标,

示例:

Profile.objects.filter(turn_off_date__range=(start_date, end_date))

答案 1 :(得分:0)

您可以只在__date之前输入给定日期

  

对于日期时间字段,将值强制转换为日期。允许链接其他字段查找。带有日期值。

.filter(turn_off_date__date=(datetime.now()+timedelta(days=x)).date())

答案 2 :(得分:0)

我想类似的东西可以正常工作:

  

从Django 1.9开始,您可以完全按照自己的方式使用__date字段查找   在您的问题中提到过。对于较旧的版本,您将必须   用其他方法做。

感谢https://stackoverflow.com/a/45735324/2950593