2017-10-06 6 views
0

Donc j'utilise MPTT pour un modèle de catégorie dans Django, et je me demandais s'il y a un moyen de filtrer une catégorie s'il n'y a pas de child.Filtre Django MPTT seulement si aucun enfant n'existe

models.py:

class Category(MPTTModel, TimeStampedModel): 
    title = models.CharField(max_length=75) 
    parent = TreeForeignKey('self', null=True, blank=True, on_delete=models.SET_NULL, related_name='children', db_index=True) 

Catégories exemple DB:

Games > Nintendo > Nintendo 64 
Games > Microsoft > Xbox One 

Je veux être en mesure d'exécuter une commande comme ceci:

Category.objects.all().has_no_children() 

Espérant que ce serait retour [Nintendo 64, Xbox One]

Répondre

2

Vous essayez d'obtenir ce qu'on appelle leaves. Cela devrait vous aider:

Category.objects.filter(lft=F('rght')-1) 
+0

Fonctionne parfaitement, merci! – Hybrid