我试图获取自创建模型以来的月数。
我的模型如下:
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)
现在,我想创建一个返回自创建日期以来的月数的方法。
坦克的任何帮助:D
答案 0 :(得分:1)
比较日期会创建一个datetime.timedelta
对象,您可以使用该对象来获取日期之间的差额。
from datetime import timedelta
from django.utils.timezone import now
delta: timedelta = now() - plan.date_created
delta.days # Number of days between dates.
然后您可以使用该值将其转换为月或年。
另一种选择会有些复杂,但是由于DateTimeField
返回一个datetime.datetime
对象,因此您还可以访问原始日期的月份号并将其与今天的日期进行比较。
例如
from django.utils.timezone import now
month_diff = now().month - plan.date_created.month
第二种方法的问题是,您必须考虑是否是同一年,如果不是同一年,则必须在考虑月份差异时考虑这一点。
答案 1 :(得分:0)
您可以在模型中编写属性,例如
from django.utils import timezone
class Plan(models.Model):
title = models.CharField(max_length=50)
...
@property
def get_month(self):
return self.date_created.month - timezone.now().month
然后您可以获取像这样的值
>>> Plan.objects.first().get_month
4