How to make a Django model fields calculated at runtime?
        Posted  
        
            by Anatoly Rr
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Anatoly Rr
        
        
        
        Published on 2010-04-02T13:17:26Z
        Indexed on 
            2010/04/02
            13:23 UTC
        
        
        Read the original article
        Hit count: 451
        
I have a model:
class Person (models.Model):
    name     = models.CharField ()
    birthday = models.DateField ()
    age      = models.IntegerField ()
I want to make age field to behave like a property:
    def get_age (self):
        return (datetime.datetime.now() - self.birthday).days // 365
    age = property (get_age)
but at the same time I need age to be a true field, so I can find it in Person._meta.fields, and assign attributes to it: age.help_text = "Age of the person", etc.
Obviously I cannot just override Person.save() method to calculate and store age in the database, because it inevitably will become wrong later (in fact, it shouldn't be stored in the database at all).
Actually, I don't need to have setters now, but a nice solution must have setting feature.
Is it possible in Django, or probably there is a more pythonic and djangoic approach to my problem?
© Stack Overflow or respective owner