【问题标题】:How to get the Year value from models.DateField...?如何从models.DateField ...获取年份值?
【发布时间】:2017-04-30 00:50:19
【问题描述】:

我想计算年龄。我试过下面的代码...

DOB = models.DateField()
Age = models.IntegerField(max_length= 2, default= date.today().year - DOB.year)

我有错误

AttributeError: 'DateField' object has no attribute 'year'

如何从 DateField 中获取年份值..

【问题讨论】:

    标签: django python-2.7 python-3.x django-models


    【解决方案1】:

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

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

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

    【讨论】:

    • ValueError: Cannot serialize: 有些值 Django 无法序列化到迁移文件中。
    • DOB = m.DateField() @property def age(self): return date.today().year - self.DOB.year Age = m.IntegerField(default=age)
    • @python19 - “你不能像这样设置动态默认值,你也不应该真的需要将它存储在数据库中”
    【解决方案2】:

    在你的views.py中:

    import datetime
    from .models import *
    
    def age(self):
        return datetime.date.today().year - self.DOB.year
    

    您可以使用该返回值显示到 HTML 文件或存储到数据库中。

    【讨论】:

    • 感谢您的回复.. 但是我在执行此操作时遇到“”导入错误“”“......原因是首先我需要在开头导入 ~age~ 方法models.py.. 到时候会出现导入错误...因为models.py还没有定义任何模型
    猜你喜欢
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 2012-02-16
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多