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

时间:2018-08-07 16:27:08

标签: django python-3.x date

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

我想查看自从创建该对象以来已经过了多少天。我该如何在Django中做到这一点?

我想做类似的事情

Option Explicit

Sub UpdateSummary()

    Dim varData
    Dim objDicCountry As Object
    Dim objDicCity As Object
    Dim objDicData As Object
    Dim lngR As Long
    Dim varResult
    Dim lngC As Long
    Dim strKey As String
    Dim varUnique

    varData = Sheet12.Range("A1").CurrentRegion
    Set objDicCity = CreateObject("Scripting.Dictionary")
    Set objDicCountry = CreateObject("Scripting.Dictionary")
    Set objDicData = CreateObject("Scripting.Dictionary")

    For lngR = LBound(varData) + 1 To UBound(varData)

        strKey = varData(lngR, 1) '--Country
        objDicCountry.Item(strKey) = ""

        strKey = varData(lngR, 2) '--City
        objDicCity.Item(strKey) = ""

        strKey = varData(lngR, 1) & "|" & varData(lngR, 2) '--Country and City
        objDicData.Item(strKey) = objDicData.Item(strKey) + varData(lngR, 3)

    Next lngR

    ReDim varResult(1 To objDicCountry.Count + 1, 1 To objDicCity.Count + 1)

    varUnique = objDicCountry.keys '--get Unique Country

    For lngR = LBound(varUnique) To UBound(varUnique)
        varResult(lngR + 2, 1) = varUnique(lngR)
    Next lngR

    varUnique = objDicCity.keys '--get Unique City

    For lngC = LBound(varUnique) To UBound(varUnique)
        varResult(1, lngC + 2) = varUnique(lngC)
    Next lngC


    For lngR = LBound(varResult) + 1 To UBound(varResult)
        For lngC = LBound(varResult) + 1 To UBound(varResult, 2)
            strKey = varResult(lngR, 1) & "|" & varResult(1, lngC) '--Country & "|" & City
            varResult(lngR, lngC) = objDicData.Item(strKey)
        Next lngC
    Next lngR

    Sheet12.Range("F6").Resize(UBound(varResult), UBound(varResult, 2)).Value = varResult
    MsgBox "Done", vbInformation

End Sub

这是我的模特

today_date - object_created_date = x days

2 个答案:

答案 0 :(得分:1)

使用timezone,然后在Comment模型中创建一个属性。

from django.utils import timezone

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

   @property
   def since(self):
      return (timezone.now() - self.created_date).days

您可以使用注释对象调用since方法。

comment = Comment.objects.first()
comment.since
# output: 6

您也可以从模板中调用此方法。

{{ comment.since }}
  

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

答案 1 :(得分:0)

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

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)