我有一个日期字段,用于注册对象的创建日期。
我想查看自从创建该对象以来已经过了多少天。我该如何在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
答案 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)