from django.db import models from datetime import date #function-type decorator def addAttribute(attr, value): def wrap(meth): def wrapped(*args): return meth(*args) setattr(wrapped, attr, value) return wrapped return wrap #class-type decorator class set_attribute(object): def __init__(self, name, value): self.name = name self.value = value def __call__(self, func): def wrapped(*args): return func(*args) setattr(wrapped, self.name, self.value) return wrapped #USAGE class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') @set_attribute('short_description', 'Published today?') def was_published_today(self): return self.pub_date.date() == date.today()