最近、Django 用の Viewflow ライブラリに出会いました。これは、複雑なワークフローを作成するための非常に強力なツールのようです。
私のアプリは、チケットを作成することによってワークフローが開始される単純なチケット システムです。ユーザーは、標準の Django 管理者の change_list/detail と同様に、CRUD ページを介してチケットに関連付けられた 0 個以上の WorkLog を作成できる必要があります。 .
リスト ビューのテンプレートはどのようなものにしますか? UI をライブラリのフロントエンドに統合したいと考えています。
このフローは明らかに次のビューを利用しています。
1) チケットの CreateView
2a) WorkLog の ListView テンプレートには、「戻る」、「追加」(ステップ 2b に進む)、「完了」(ステップ 3 に進む) というコントロールがあります。
2b) WorkLog の CreateView
3) 終了
コード:
models.py:
class TicketProcess(Process):
title = models.CharField(max_length=100)
category = models.CharField(max_length=150)
description = models.TextField(max_length=150)
planned = models.BooleanField()
worklogs = models.ForeignKey('WorkLog', null=True)
class WorkLog(models.Model):
ref = models.CharField(max_length=32)
description = models.TextField(max_length=150)
ビュー.py:
class WorkLogListView(FlowListMixin, ListView):
model = WorkLog
class WorkLogCreateView(FlowMixin, CreateView):
model = WorkLog
fields = '__all__'
フロー.py:
from .views import WorkLogCreateView
from .models import TicketProcess
@frontend.register
class TicketFlow(Flow):
process_class = TicketProcess
start = (
flow.Start(
CreateProcessView,
fields = ['title', 'category', 'description', 'planned']
).Permission(
auto_create=True
).Next(this.resolution)
)
add_worklog = (
flow.View(
WorkLogListView
).Permission(
auto_create=True
).Next(this.end)
)
end = flow.End()