小编Ana*_* Rr的帖子

如何在运行时计算Django模型字段?

我有一个模特:

class Person (models.Model):
    name     = models.CharField ()
    birthday = models.DateField ()
    age      = models.IntegerField ()
Run Code Online (Sandbox Code Playgroud)

我想让age字段表现得像一个属性:

    def get_age (self):
        return (datetime.datetime.now() - self.birthday).days // 365

    age = property (get_age)
Run Code Online (Sandbox Code Playgroud)

但同时我需要age成为一个真正的领域,所以我可以找到它Person._meta.fields,并为其分配属性:age.help_text = "Age of the person"等等.

显然我不能只是覆盖Person.save()计算和存储age在数据库中的方法,因为它以后不可避免地会出错(事实上,它根本不应该存储在数据库中).

实际上,我现在不需要设置setter,但是一个好的解决方案必须具有设置功能.

是否有可能在Django,或者可能有更多的pythonic和djangoic方法来解决我的问题?

python django field django-models

6
推荐指数
1
解决办法
3575
查看次数

标签 统计

django ×1

django-models ×1

field ×1

python ×1