Django:从DateTimeField获取年份

9

我有一个网页,用户可以在上面搜索其他用户。使用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',但是出现了一个错误,提示不存在 'year'。

如何将 DateTimeField 添加到列表中?

2个回答

15

构建一个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中调用此函数。

0

你不能像这样设置动态默认值,而且你真的不需要将其存储在数据库中。

只需将其设置为属性(甚至可以是缓存属性)即可。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接