给定两个DateFields时,如何计算天数? Django

时间:2018-08-28 05:57:03

标签: python django django-templates

models.py

from django.db import models

class Leave(models.Model):
    ...
    from_date = models.DateField()
    to_date = models.DateField()

    def __str__(self):
        return self.name

以上是我的model.py中定义的两个日期字段。

views.py

from django.shortcuts import render, render_to_response
from .forms import LeaveRequestForm
from django.shortcuts import 
from .models import Leave
...
def get_days(request):
    data = Leave.objects.all()
    for x in data :
        if x.employee_ID == request.user.username:
            d1 = x.from_date
            d2 = x.to_date
            days = d2 - d1
    return render(request,"status.html", days)

上面的代码是我对获取天数的尝试。

在这里,我的模型是Leave,而我的表格是LeaveRequestForm。在我的HTML文件中以获取使用{{ from_date|timesince:to_date }}的天数,此方法有效,但我想从数字中减去此天数。

base:我正在从事一个休假管理项目。如果用户要求请假5天,并且他有资格请假10天。他的平衡叶应该等于5。

如何通过视图实现这一目标?

2 个答案:

答案 0 :(得分:1)

在模型中将property用作

from django.db import models


class Leave(models.Model):
    from_date = models.DateField()
    to_date = models.DateField()

    def __str__(self):
        return self.name

    @property
    def date_diff(self):
        return (self.to_date - self.from_date).days

,并且可以在模板中将其用作 {{ leave_object.date_diff }}

答案 1 :(得分:0)

在您的情况下,d2 - d1是一个timedelta对象,它具有整数属性days

因此,您需要在python代码中编写days = (d2 - d1).days,然后您会得到一个int,可以从所需的任何内容中减去。