2017-04-30 1 views
0

j'ai une super classe comme ceci:(django) obtenir requête de classe enfant

class Superclass(models.Model): 
number = models.PositiveIntegerField() 

class Meta: 
    abstract = True 

def get_next(self): 
    return Superclass.objects.get(number=self.number+1) 

Maintenant, j'ai une classe enfant qui hérite de la superclasse.

Quel est le problème?

  1. Je ne peux pas faire ceci: Superclass.objects parce que la superclasse ne fait référence à aucune table de base de données.
  2. Je ne veux pas interroger tous Childs superclasse, seul celui de la classe des enfants en cours, comme ceci: Quand je fais instance_of_child1.get_next Je ne veux pas une instance de Child2.

Comment résoudre ce problème?

  • Ma première idée était d'ajouter une constante statique à une classe enfant qui contient la classe (donc que je pouvais faire self.myclass.objects) Mais cela ne semble pas être une bonne façon. Faire la méthode get_next faisant partie de la classe enfant. Problème: il y aura des doublons.

Répondre

0

Cela devrait fonctionner:

def get_next(self): 
    return self.__class__.objects.get(number=self.number+1) 
+0

je l'ai fait par 'type (auto) .objects', mais je pense, c'est la même. – Asqiir

+0

Oui, vous avez raison .. – albar