Джанго: Получить количество раз, сколько 25-го числа прошло с определенной даты - PullRequest
2 голосов
/ 23 апреля 2019

Привет, в моем проекте django у меня есть следующая модель, и я хочу создать функцию @property, которая будет подсчитывать, сколько раз с date_created было 25 число месяца.

Например :
Я создал модель в 1.1.2019. Функция должна теперь возвращать 3, потому что с тех пор было 3 25-ой.

class Plan(models.Model):
    title = models.CharField(max_length=50)
    date_created = models.DateTimeField(default=timezone.now)
    plan_type = models.IntegerField()
    owner = models.ForeignKey(User, on_delete=models.CASCADE)

Спасибо за любыепомощь <3 </p>

1 Ответ

1 голос
/ 24 апреля 2019

Я думаю, вы должны взглянуть на функцию rrule из библиотеки dateutil.

Это должно дать вам то, что вы ищете, но я пока не могу проверить это.

from datetime import datetime
from dateutil.rrule import rrule, MONTHLY
len(list(rrule(MONTHLY, bymonthday=(25), dtstart=PlanModel.date_created, until=datetime.now())))

Если вы не хотите использовать эту библиотеку, я бы повторял по дням, просматривая номер каждого дня, что-то вроде этого (не смог проверить и это тоже)

from datetime import timedelta, datetime

def daterange(start_date, end_date):
    for n in range(int ((end_date - start_date).days)):
        yield start_date + timedelta(n)

start_date = PlanModel.date_created
end_date = datetime.now()

if start_date.day == 25:
    c=1
else:
    c=0

for single_date in daterange(start_date, end_date):
    if single_date.day == 25:
        c+=1
...