N'a pas pu penser à un titre de la question plus appropriée, mais je suis à la recherche de quelques conseils sur la façon de mettre en œuvre l'exigence suivante:Django: obtenir des objets parents état correspondant à l'enfant
J'ai une classe Project
, qui peut contenir Task
objets. Les tâches ont un cessionnaire. Dans mon modèle Django, je souhaite afficher un «arbre» de projets et de tâches pour un utilisateur donné, en ne montrant que les projets qui ont au moins une tâche assignée à l'utilisateur, et au sein de chaque projet, uniquement les tâches affectées au utilisateur.
Mon approche initiale était d'abord de trouver des projets avec au moins une tâche assignée:
def list_assigned_tasks(request, assignee_id):
projects = Project.objects.filter(task__assignee=assignee_id).distinct()
# ...
(pas l'approche la plus efficace, mais je ne traitant qu'avec un petit nombre de projets & tâches.)
Je pensais que je pourrais écrire une méthode sur Project
pour récupérer uniquement les tâches assignées à un utilisateur:
class Project(models.Model):
# ...
def assigned_tasks(self, assignee_id):
return self.task_set.filter(assignee=assignee_id)
ou quelque chose comme ça.
Cependant, je ne serais pas capable d'appeler cette méthode directement à partir d'un modèle. Donc, ma question est la suivante: y a-t-il un meilleur moyen d'y parvenir? Vous recherchez des conseils sur l'implémentation de QuerySet et de modèle.
(Mon autre pensée était de verrouiller simplement les tâches assignées une sur l'instance de projet list_assigned_tasks
- est une approche valable?)
Ah, excellent. Je n'étais pas au courant de «regrouper» - cela ressemble à la chose, merci. – harto