在这里,我只是想在模型上注释一个字段,该字段提供人类可读的格式,说明自创建以来已经过了多长时间
My Model is created 30 seconds ago
我的模特说明:
from django.db import models
class MyModel(models.Model):
name = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['-created_at']
@property
def natural_time(self):
return naturaltime(self.created_at)
我的所作所为
from django.contrib.humanize.templatetags.humanize import naturaltime
from django.db.models import F
from .models import MyModel
m = MyModel.objects.annotate(timesincecreated=naturaltime(F('created_at'))
print m.values('timesincecreated')
在这个打印电话上我得到了我在模型中使用的DateTimeField
。
但如果我想进入该物业。
from .models import MyModel
m= MyModel.objects.first()
print m.natural_time
有效。
有任何帮助吗? TIA。
答案 0 :(得分:1)
您不能对naturaltime
使用annotation
函数,annotation
是在数据库级别完成的计算。
Django只提供一组可由数据库处理的基本计算,如Count, Sum, Min, Max
等。您可以参考official doc了解有关Query Expressions
的更多信息。