Django:获取自某个日期起经过25次的次数

时间:2019-04-23 12:54:48

标签: python django django-models

在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

1 个答案:

答案 0 :(得分:1)

我认为您应该看一下dateutil库中的rrule函数。

这应该可以为您提供所需的东西,但是我还无法测试。

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