Django值从DateTimeField获得年份

时间:2014-02-12 22:05:07

标签: python django

我有一个页面,用户可以在其中搜索其他用户。使用AJAX调用搜索,并使用JSON返回结果,代码如下:

return HttpResponse(json.dumps({'users': list(users.values('first_name', 'last_name', 'gender', 'zip_code__city', 'zip_code__state')) }))

我使用birthday = models.DateTimeField()将用户生日存储在模型中。我想用结果回到生日那一年,但我遇到了麻烦。返回整个日期将起作用,我可以随后解析一年。

当我尝试将{birthday'添加到values中的参数时,我收到一个错误,即它不是JSON可序列化的。我也试过'birthday__year',但是这回复了一个错误,即没有'年'这样的东西。

如何将DateTimeField放入列表?

2 个答案:

答案 0 :(得分:6)

构建models.py方法以返回年份:

<强> models.py

from django.db import models

class MyModel(models.Model):
  birthday = models.DateTimeField()

  def get_year(self):
    return self.birthday.year

然后从 views.py

调用此函数

答案 1 :(得分:0)

您无法像这样设置动态默认值,也不需要将其存储在数据库中

只需将其设为属性(甚至可能是cached_property)

@property
def age(self):
   return date.today().year - self.DOB.year