Как рассчитать количество дней, когда даны два поля DateFields? Джанго - PullRequest
0 голосов
/ 28 августа 2018

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 }}, это работает, но я хочу вычесть это количество дней из числа.

база: я работаю над проектом управления отпуском. Если пользователь просит отпуск на 5 дней, и он имеет право на 10 дней. Его баланс листьев должен быть равен 5.

Как мне добиться этого с помощью представлений?

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

использовать property в модели как

from django.db import models


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

    def __str__(self):
        return self.name

    <b>@property
    def date_diff(self):
        return (self.to_date - self.from_date).days</b>

и в вашем шаблоне вы можете использовать его как {{ leave_object.date_diff }}

0 голосов
/ 28 августа 2018

В вашем случае d2 - d1 - это объект timedelta, который имеет целочисленное свойство days.

Так что вам нужно написать days = (d2 - d1).days в вашем коде Python, и вы получите int, который вы можете вычесть из всего, что вам нужно.

...