如何使用django annotate比较当前日期与模型中的其他日期

ee7vknir  于 2023-04-07  发布在  Go
关注(0)|答案(3)|浏览(135)

我想获取当前时间和另一个日期之间的天数。下面是我使用的命令:

employees = Employee.objects.annotate(
        duration=ExpressionWrapper(datetime.now().date() - F('start_working_date'), output_field=DurationField())
        )

但是我得到的结果(employee.duration)是0。

for employee in employees:
    employee.duration

这是我的模型:

class Employee(models.Model):
    name = models.CharField(max_length=30)
    start_working_date = models.DateField()
6vl6ewon

6vl6ewon1#

试试这个__range

date_range = [from_date, to_date ]
emp = Employee.objects.filter(start_working_date__range=date_range)
bvjxkvbb

bvjxkvbb2#

使用Value在查询表达式中传递和使用值

from datetime import date
from django.db.models import F, Value

employees = Employee.objects.annotate(
    duration=Value(date.today()) - F('start_working_date')
)
2skhul33

2skhul333#

只需使用Fclass将所需的时间与模型的某个字段(start_working_date)进行比较。
两个提示:
1-现在时间最好使用Django时区
2-你应该使用now的**.date()**方法来比较它和start_working_date

from django.db.models import F
from django.utils import timezone    

employees = Employee.objects.annotate(
   duration=timezone.now().date() - F('start_working_date')
)

相关问题