【发布时间】:2010-04-02 13:17:26
【问题描述】:
我有一个模型:
class Person (models.Model):
name = models.CharField ()
birthday = models.DateField ()
age = models.IntegerField ()
我想让age 字段表现得像一个属性:
def get_age (self):
return (datetime.datetime.now() - self.birthday).days // 365
age = property (get_age)
但同时我需要age是一个真正的字段,所以我可以在Person._meta.fields中找到它,并为其分配属性:age.help_text = "Age of the person"等
显然我不能只重写Person.save()方法来计算age并将其存储在数据库中,因为它以后不可避免地会出错(实际上它根本不应该存储在数据库中)。
其实我现在不需要setter,但是好的解决方案必须有设置功能。
在 Django 中是否有可能,或者可能有更 Python 和 djangoic 的方法来解决我的问题?
【问题讨论】:
-
为什么覆盖保存方法不起作用?
-
因为下次我们获取模型实例时可能会出错。这是一个简单的例子,我实际上有更复杂的字段,其值的变化不可预测,取决于其他几个因素。
标签: python django django-models field