J'ai un modèle comme ceci:filtre ManyToManyField Django auto-récursif requête
class Activity(models.Model):
title = models.CharField(max_length=200)
summary = models.TextField(null=True, blank=True)
tasks = models.ManyToManyField('self', symmetrical=False, null=True, blank=True)
Il fonctionne comme ceci, une activité peut être liée à elle-même et l'activité mère est appelée une « activité » et l'activité des enfants/les activités seront appelées 'Tâche/Tâches'
Comment filtrer le modèle pour obtenir toutes les 'Activités' et Comment filtrer le modèle pour obtenir toutes les 'Tâches'?
Merci pour toute l'aide.
Doest travail tout à fait ce que je voulais. Les activités peuvent avoir 0 ou plusieurs «tâches» et les tâches peuvent également avoir 0 ou plusieurs «sous-tâches». Tout cela se passe dans la même table. Une activité est une activité uniquement si elle n'est pas un élément 'enfant' Une tâche est une tâche s'il s'agit d'un élément 'enfant' d'une activité. J'espère que j'ai du sens! Je sais que cela peut être fait, mais je ne sais pas comment. – ninja123
réellement travaillé après avoir fait quelques tweeks ... Changé à: annotated_qs = Activity.objects.annotate (num_parent = Count ('activité')) = activités annotated_qs.filter (num_parent = 0) = tâches annotated_qs. filter (num_parent__gt = 0) – ninja123