我最近遇到了Django的Viewflow库,我似乎是一个非常强大的工具,用于创建复杂的工作流程。
我的应用程序是一个简单的票务系统,通过创建票证来启动工作流程,然后用户应该能够通过CRUD页面创建与票证关联的零个或多个WorkLog,类似于标准的Django admin change_list / detail。
列表视图的模板应该是什么样的?我想将UI集成到图书馆的前端。
该流程清楚地使用了以下观点:
1)CreateView for Ticket
2a)WorkLog的ListView,模板有控件' back','添加' (转到步骤2b),'完成' (转到第3步)。
2b)CreateView for WorkLog
3)结束
代码:
models.py:
select coalesce(lang.desctranslated, data.descoriginal)
from data
left join lang
on data.descid = lang.descid and lang.langid = 2
views.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)
flows.py:
class WorkLogListView(FlowListMixin, ListView):
model = WorkLog
class WorkLogCreateView(FlowMixin, CreateView):
model = WorkLog
fields = '__all__'
答案 0 :(得分:0)
您可以在不同的视图或同一视图中处理,只是不要在工作日志添加请求上调用activation.done
。您可以通过检查request.POST数据中按下的按钮来完成。
@flow.flow_view
def worklog_view(request):
request.activation.prepare(request.POST or None, user=request.user)
if '_logitem' in request.POST:
WorkLog.objects.create(...)
elif request.POST:
activation.done()
request.activation.done()
return redirect(get_next_task_url(request, request.activation.process))
return render(request, 'sometemplate.html', {'activation': request.activation})