0

在这里,我只想在模型上注释一个字段,该字段提供人类可读的格式,说明自创建以来经过了多少时间

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。

4

1 回答 1

1

您不能使用naturaltime函数 for annotationannotation是在数据库级别完成的计算。

Django 只提供了一组基本的计算,可以被数据库处理Count, Sum, Min, Max等等。你可以参考官方文档来了解更多Query Expressions

于 2017-05-24T04:37:05.783 回答