Django-ViewFlow:如何将CRUD视图添加到流

时间:2017-07-17 12:08:29

标签: django django-viewflow

我最近遇到了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__'

1 个答案:

答案 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})