Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查询自我在Django的db中创建数据以来的天数_Django_Python 3.x_Date - Fatal编程技术网

查询自我在Django的db中创建数据以来的天数

查询自我在Django的db中创建数据以来的天数,django,python-3.x,date,Django,Python 3.x,Date,我有一个日期字段,用于注册对象的创建日期 我想看看自从我创建这个对象以来,已经过去了多少天了。我在Django怎么做 我想做点像 today_date - object_created_date = x days 这是我的模型: class Comment(models.Model): created_date = models.DateTimeField() comment = models.CharField(max_length=500, default='', blan

我有一个日期字段,用于注册对象的创建日期

我想看看自从我创建这个对象以来,已经过去了多少天了。我在Django怎么做

我想做点像

today_date - object_created_date = x days
这是我的模型:

class Comment(models.Model):
    created_date = models.DateTimeField()
    comment = models.CharField(max_length=500, default='', blank=True)
    user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
    post =models.ForeignKey(Post,related_name='comments',on_delete=models.CASCADE)

使用时区,并在注释模型内创建属性

from django.utils import timezone

class Comment(models.Model):
   ...
   # rest of your fields

   @property
   def since(self):
      return (timezone.now() - self.created_date).days
您可以使用comment对象调用
since
方法

comment = Comment.objects.first()
comment.since
# output: 6
也可以从模板中调用此方法

{{ comment.since }}
since
的行为类似于模型字段,它将返回自创建注释以来的天数


获取数据库中最后创建的对象,并从今天减去其创建日期

latest_comment = Comment.objects.all().latest('created_date')
time_since_creation_timdelta = django.utils.timezone.now() - latest_comment.created_date
# This is assuming your dates are timezone aware. Otherwise, just just use datetime.now instead of timezone.now.
days_past = time_since_creation.days
seconds_past = time_since_creation.seconds
hours_past = time_since_creation.hours
# etc... (see datetime.timedelta documentation for info on what else you get from a timdelta object)