У меня есть модель:
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
в базе данных, потому что это неизбежно впоследствии станет неправильным (на самом деле, его вообще не следует хранить в базе данных).
На самом деле, мне сейчас не нужны сеттеры, но хорошее решениедолжен иметь функцию настройки.
Возможно ли это в Django, или, возможно, есть более питонический и djangoic подход к моей проблеме?