문제

더 적절한 질문 제목을 생각할 수는 없지만 다음 요구 사항을 구현하는 방법에 대한 조언을 찾고 있습니다.

나는있다 Project 포함 할 수있는 클래스 Task 사물. 작업에는 양수인이 있습니다. Django 템플릿에서 주어진 사용자에 대한 프로젝트 및 작업의 '트리'를 렌더링하여 사용자에게 적어도 하나의 작업을 할당하고 각 프로젝트 내에서 해당 작업 만 할당 된 프로젝트 만 표시하고 싶습니다. 사용자.

나의 초기 접근법은 먼저 하나 이상의 할당 된 작업을 가진 프로젝트를 찾는 것이 었습니다.

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)

또는 그런 것.

그러나 템플릿 내에서 직접 그 메소드를 호출 할 수는 없습니다. 그래서 내 질문은 : 이것을 달성하는 더 좋은 방법이 있습니까? 쿼리 세트 및 템플릿 구현에 대한 조언을 찾고 있습니다.

(내 다른 생각은 할당 된 작업을 각 프로젝트 인스턴스에 볼트로 볼 수있는 것이 었습니다. list_assigned_tasks - 유효한 접근 방식인가요?)

도움이 되었습니까?

해결책

사용자에게 할당 된 작업 목록을 얻으려면 다음을 따라 무언가를 할 것입니다.

assignee = get_object_or_404(Person, pk=assignee_id)
tasks = assignee.task_set.select_related('project').order_by('project')

그런 다음 템플릿에서 :

{% regroup tasks by project as project_list %}
{% for pgroup in project_list %}
    <h3>{{ pgroup.grouper }}</h3>
    <ul>
    {% for task in pgroup.list %}
       <li>{{ task }}</li>
    {% endfor %}
    </ul>
{% endfor %}

구현에 대한 세부 정보를 조정해야 할 수도 있지만 내가 바라는 아이디어를 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top