나는 (Django auth Groups에서와 같이) 여러 그룹의 사용자를 포함하는 다소 선형적인 응답 프로세스가 필요한 Django의 프로젝트 관리 응용 프로그램을 개발 중입니다. 응답 프로세스의 각 단계에는 여러 응답 옵션 (단계에 고유 한 대부분의 옵션)이 있으며 특정 그룹 내의 사용자에게 지정됩니다. 프로세스의 다음 단계는 사용자의 응답에 의해 결정되며 때로는 프로젝트 구성원 중 하나로부터 추가 정보를 요청해야 할 수도 있습니다.Django : 선형 (아직 유연한) 프로젝트 관리 워크 플로우를 어떻게 추적합니까?
문제는 현재 구현이 다소 번거롭고 응답 프로세스를 추적하는 더 나은 방법이 있다는 것입니다. 나는 누군가가보다 견고한 솔루션에 대한 통찰력을 제공 할 수 있기를 희망했다.
예를 들어 영업 담당자, 영업 관리자 및 프로젝트 관리자와 같은 사용자 그룹이있는 프로젝트를 생각해보십시오. 모델은 현재 다음과 같습니다 : 여기
class Project(models.Model):
assigned_to = models.ForeignKey(User, related_name="projects_assigned_to") #Indicates which user needs to respond next. Will be sales_rep, sales_mgr, or project_mgr.
sales_rep = models.ForeignKey(User, related_name="sales_rep_projects") #choices limited to "Sales Rep" Group
sales_mgr = models.ForeignKey(User, related_name="sales_mgr_projects") #choices limited to "Sales Manager" Group
project_mgr = models.ForeignKey(User, related_name="project_mgr_projects") #choices limited to "Project Manager" Group
current_step = models.ForeignKey(Step, related_name="projects_with_current_step")
previous_step = models.ForeignKey(Step, related_name="projects_with_previous_step")
status = models.ForeignKey(Status) #Automatically assigned according to the user's response. Includes things like "On Track", "On Hold", "Rejected", "Accepted", etc.
class Step(models.Model):
name = models.CharField(max_length=50)
class Status(models.Model):
name = models.CharField(max_length=50)
프로세스가 작동하는 방법의 간단한 개요입니다 :
- 영업 담당자가 새 프로젝트를 생성하고
- 영업 관리자는이 영업 관리자에 할당 다음과 같은 옵션이 제공 :
(A) 프로젝트를 승인하거나
(b)의 프로젝트 인 경우 영업 담당자 - 에서 더 많은 정보를 요청 승인, 다음과 같은 옵션이 표시되는 프로젝트 관리자에 할당 :
(가) 시작 프로젝트
(b)는 거부 프로젝트
(다) 영업 담당자로부터 더 많은 정보를 요청하거나 영업 관리자 - 더하면 정보가 사용자로부터 요청되면 프로젝트는 해당 사용자에게 할당되고 텍스트 상자 응답 만 제공하면됩니다. 그러나 일단 응답이 수신되면 프로젝트는 이전 단계로 돌아 가야합니다 (위의 이유로 current_step 및 previous_step을 추적합니다). 이 예에서 Project Manager가 영업 담당자에게 더 많은 정보를 요청하면 영업 담당자가 응답 한 후에 프로젝트가 이전과 동일한 응답 옵션으로 프로젝트 관리자에게 다시 지정되어야합니다 (시작, 거부, 추가 정보 요청).
전체 프로세스에는 약 10 단계가 있습니다.
일을 복잡하게하려면 각 단계에서 선택한 응답을 표시 할 수 있어야합니다. 예를 들어, 영업 관리자가 프로젝트를 승인하면 "판매 관리자가 프로젝트를 승인했습니다"와 함께 주석이있을 수 있습니다.
class Response(models.Model):
comment = models.TextField()
response_action = models.ForeignKey(ResponseAction)
submitted = models.DateTimeField()
class ResponseAction(models.Model):
""" I.e. 'Sales Manager approved the project', 'Project Manager commenced the project'"""
name = models.CharField(max_length=100)
는 지금 각 대응 조치에 대한 논리가 하드 뷰에서 코딩, 한 단계 다른 사이에 공식적인 관계가 없습니다 :이 모델은 다음과 같습니다. 이 워크 플로를 추적하기 위해 사용해야하는 더 나은 모델 구조 또는 데이터 구조가있는 것처럼 느껴지지만 현재 시스템을 오랫동안 사용해 본 덕분에 다르게 생각하는 데 어려움을 겪고 있습니다. 어떤 통찰력이나 영감을 주시면 감사하겠습니다! 내가 무엇인가를 명확히해야하는지 알려주세요.
답변 해 주셔서 감사합니다. 나중에 오늘 같이 놀고 어떻게 진행되는지 알려 드리겠습니다. –
다른 일을하고 싶었습니다. 일부 허용 된 작업의 경우 작성해야하는 몇 가지 필드가 있습니다. 내가 이러한 필드를 폼 수준에서 지정하거나 AllowedActionOption과 같은 다른 ManyToMany 필드를 만들어야합니까? 모든 도움에 감사드립니다. –
단순한 경우 (예 : 모든 텍스트 상자와 이름이 다른 경우), AllowedAction에서 M2M으로 다른 모델을 만들어야합니다. 더 복잡한 경우 (일부 필드는 다른 장소로 FK, 일부는 텍스트, 일부는 URL 등), django의 양식을 사용하고 허용 된 작업에서 사용할 양식을 지정하십시오. –