【问题标题】:How to calculate number of days, when two DateFields are given? Django当给出两个 DateFields 时,如何计算天数?姜戈
【发布时间】:2019-02-02 16:24:36
【问题描述】:

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

以上是我的models.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。

如何通过视图实现这一点?

【问题讨论】:

  • 我在这里回答了一个类似的问题,implementation of TIMESTAMPDIFF
  • @JPG 我没有使用 MYSQL 顺便说一句,我想要一个视图而不是模型条目,以便我在 dbsqlite3 中的数据库不起作用,我可以在模板中使用它。
  • @MD.KhairulBasar 我使用{{ from_date|timesince:to_date }} 来获取天数,但我需要从数字中减去它。这不起作用
  • @Jose 所以,你可以使用模板变量。或者您也可以使用模型方法。这是使用模板变量的方法 [stackoverflow.com/a/1070414/3968623](here).

标签: python django django-templates


【解决方案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 }}

【讨论】:

  • 那么,现在我可以从一个数字中减去天数。喜欢{{ 10 -leave_object.date_diff }}
  • 是的。你可以这样做
  • 这不会发生Could not parse the remainder: ' - x.date_diff' from '10 - x.date_diff'
  • Dhanyavad 只是 bhai!
【解决方案2】:

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

所以你需要在你的python代码中写days = (d2 - d1).days,你会得到一个int,你可以从你需要的任何东西中减去它。

【讨论】:

  • 在我的 html 文件中,我将其指定为 {{days}}。但没有任何变化。
猜你喜欢
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 2015-07-18
  • 2020-01-11
  • 2015-11-05
  • 2010-09-14
相关资源
最近更新 更多