首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django viewflow扩展任务视图

Django viewflow扩展任务视图
EN

Stack Overflow用户
提问于 2018-07-07 10:28:08
回答 1查看 291关注 0票数 0

我正在尝试一个在应用程序中同时使用django-视图流django-许可的想法,在应用程序中会有一些复杂的权限规则。我理解django-许可权工作方式的方法是在要应用权限规则的视图中添加一个装饰器。

通过扩展基本视图流视图并将urls.py指向扩展视图,我成功地实现了对流程视图的处理。当我试图对任务遵循相同的想法时,我会遇到下面列出的错误

类型对象'CBVTask‘没有属性'flow_class’

models.py

代码语言:javascript
复制
class CBVArticle(models.Model):
    created_by = models.ForeignKey(User)
    title = models.CharField(max_length=100)
    content = models.TextField()

class CBVArticleProcess(Process):
    article = models.ForeignKey(CBVArticle, blank=True, null=True)

class CBVTask(Task):

    class Meta:
        proxy = True

flow.py

代码语言:javascript
复制
class CBVArticleFlow(Flow):
    process_class = models.CBVArticleProcess
    task_class = models.CBVTask

    start = (
        flow.Start(views.ArticleCreate).Next(this.end)
    )

    end =flow.End()

urls.py

代码语言:javascript
复制
myflow_urls = FlowViewSet(CBVArticleFlow).urls  

urlpatterns = [
    url(r'^process/(?P<process_pk>\d+)/$', views.TestDetailProcessView.as_view(), kwargs = dict(flow_class=CBVArticleFlow), name='detail'),
    url(r'^process/(?P<process_pk>\d+)/start/(?P<task_pk>\d+)/detail/$', views.DetailTaskView.as_view(), kwargs = dict(flow_class=CBVArticleFlow, flow_task=CBVTask), name='start__detail'),
]

views.py

代码语言:javascript
复制
from viewflow.flow.views import DetailProcessView as BaseDetailProcessView, DetailTaskView as BaseDetailTaskView

@permission_required('test_app_cbv.view_cbvarticleprocess')
class TestDetailProcessView(BaseDetailProcessView):
    template_name = 'test_app_cbv/detail.html'

    def get_queryset(self):
        pk = self.kwargs['process_pk']

        return models.CBVArticleProcess.objects.filter(process_ptr_id = pk)

class DetailTaskView(BaseDetailTaskView):
    template_name = 'test_app_cbv/task_detail.html'

提前感谢您的指点!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-12 11:54:46

结果是一个菜鸟的错误-- urls.py文件应该是这样读的:

urls.py

代码语言:javascript
复制
myflow_urls = FlowViewSet(CBVArticleFlow).urls  

urlpatterns = [
    url(r'^process/(?P<process_pk>\d+)/$', views.TestDetailProcessView.as_view(), kwargs = dict(flow_class=CBVArticleFlow), name='detail'),
    url(r'^process/(?P<process_pk>\d+)/start/(?P<task_pk>\d+)/detail/$', views.DetailTaskView.as_view(), kwargs = dict(flow_class=CBVArticleFlow, flow_task=CBVArticleFlow.start), name='start__detail'),
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51222254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档