2014-02-12 39 views
2

我有一个页面,用户可以搜索其他用户。搜索被称为使用AJAX和结果使用JSON用下面的代码返回:Django值从DateTimeField获得年份

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

我存储在模型birthday = models.DateTimeField()用户的生日。我正在试着回到生日那一年的结果,但我遇到了麻烦。返回整个日期将工作,以及我总能在一年后解析出来。

当我尝试在values的参数中添加'生日'时,出现一个错误,它不是JSON可序列化的。我也尝试过'生日_年',但是这返回了一个错误,即没有'年'这样的东西。

如何将DateTimeField放入列表中?

回答

4

构建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

你不能设置一个调用这个函数像这样的动态默认,也不应该真的需要将其存储在数据库中

只是使它成为一个属性(甚至可能是cached_property)

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