heritage de model et manager
Bonjour à tous,
J'ai un problème avec l'héritage dans mes models: je crée une classe ThrashableModel en m'inspirant de ce billet:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class TrashableModel(models.Model):
deleted = models.BooleanField(default=False, null=False, blank=False)
objects = UnTrashedManager()
trashed = TrashedManager()
def delete(self):
self.deleted = True
self.save()
def undelete(self):
self.deleted = False
self.save()
restore = undelete |
avec les managers qui vont bien:
Code:
1 2 3 4 5 6 7
| class UnTrashedManager(models.Manager):
def get_query_set(self):
return super(UnTrashedManager, self).get_query_set().filter(deleted=False)
class TrashedManager(models.Manager):
def get_query_set(self):
return super(TrashedManager, self).get_query_set().filter(deleted=True) |
j'hérite de mon model:
Code:
1 2 3 4 5 6 7 8
| class Zone(TrashableModel):
name = models.CharField(max_length=64, null=False, blank=False, unique=True)
slug = models.CharField(max_length=4, null=False, blank=False, unique=True)
def __unicode__(self):
return "zone %s" % self.nom |
L' héritage fonctionne pour le champ deleted, pas pour mes managers!
Y-a-t-il une astuce pour les hériter sans avoir à les ré-écrire dans chaque nouveau model?
Merci.