より適切な質問のタイトルが思い浮かびませんでしたが、次の要件を実装する方法についてアドバイスを求めています。
オブジェクトを含む可能性のあるProject
クラスがありTask
ます。タスクには担当者がいます。私の Django テンプレートでは、特定のユーザーのプロジェクトとタスクの「ツリー」をレンダリングして、少なくとも 1 つのタスクがユーザーに割り当てられているプロジェクトのみを表示し、各プロジェクト内では、そのユーザーに割り当てられているタスクのみを表示したいと考えています。ユーザー。
私の最初のアプローチは、少なくとも 1 つのタスクが割り当てられているプロジェクトを最初に見つけることでした。
def list_assigned_tasks(request, assignee_id):
projects = Project.objects.filter(task__assignee=assignee_id).distinct()
# ...
(最も効率的なアプローチではありませんが、少数のプロジェクトとタスクしか扱っていません。)
Project
次に、ユーザーに割り当てられたタスクのみを取得するメソッドを作成しようと考えました。
class Project(models.Model):
# ...
def assigned_tasks(self, assignee_id):
return self.task_set.filter(assignee=assignee_id)
またはそのようなもの。
ただし、そのメソッドをテンプレート内から直接呼び出すことはできません。だから、私の質問は次のとおりです。これを達成するためのより良い方法はありますか? QuerySet とテンプレートの実装に関するアドバイスを探しています。
(私の他の考えは、割り当てられたタスクを各プロジェクトインスタンスにボルトで固定することでしたlist_assigned_tasks
-それは有効なアプローチですか?)