I have the following models: class Deal(models.Model): """ Deal is a deal for Interest. There should only be one deal for each Interest pair """ interest = models.ForeignKey( Interest ) max_sell = models.IntegerField(default = 1)
def terms(self): return self.term_set.all() class Term( models.Model ): """ A Term are the terms of a Deal. There can be many Terms for each Deal """ deal = models.ForeignKey( Deal ) canceled = models.BooleanField(default = False) cost = models.CharField( max_length = 10, blank = True, null = True ) buyer = models.ForeignKey( User, blank = True, null = True ) def execute(self, **kwargs): pass class Expire( Term ): """ Subclass of Term that is good until an expiration date """ date = models.DateField() def execute(self): if self.buyer == None or self.canceled: return False delta = self.date - date.today() if delta.days >= 0: return True return False def __unicode__(self, **kwargs): return '<Expire:'+ self.date.strftime("%Y-%m-%d") + '>' class Cancel( Term ): """ Subclass of Term that the Term is good until canceled """ def execute(self): if self.buyer == None or self.canceled: return False return True def __unicode__(self): return '<Cancel>' I want to do the following: for term in deal.terms() if term.execute(): do something My thought was the term.execute method would be overridden and the type of term, either cancel's or expire's execute method would occur, but it only executes the term.execute() I can get around it by having the following as the term execute, but its ugly def execute(self): try: term.cancel.execute() except: pass try: term.expire.execute() except: pass Any suggestions? -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.