在Django Admin中实现工作流 - Django

时间:2010-08-04 13:36:39

标签: python django workflow django-admin

我有一个很好的管理面板设置,因此用户可以管理网站中的数据。

问题是我需要实施工作流程所以保存的模型可以从各个阶段获得批准,然后最终发布。


由于所讨论的模型只有一个,我想添加一个布尔'approved_for_publishing'字段和'approved_by'manytomany字段。

obstancle正在管理面板中集成它。

如果某人对该主题有一些意见,那将是非常棒的。 =)

2 个答案:

答案 0 :(得分:1)

早些时候我完成了类似的功能。这是你需要做的: 创建批准状态模型,并具有不同的批准变体,即每个模型对象代表不同的批准阶段。此外,您必须具有StatusHistory模型,该模型反映了您的文章(例如)当前状态。

class Article(models.Model)
      title=models.CharField(max_length=32)
      body=models.TextField()

class ApprovalStatus(models.Model):
      name=models.CharField(max_length=32)
      alias=models.CharField(max_length=32,pk=True)

class StatusHistory(models.Model):
      status=models.ForeignKey(ApprovalStatus)
      article=models.ForeignKey(Article)
      current=models.BooleanField(default=True)

因此,当您在管理员中更改文章的状态时,将创建一个新的StatusHistory对象,并为旧对象提供current = False变量。 这种方法看起来有点笨重,但是当你实现它时,你需要的只是容易陷入ORM:状态历史只是一个所有对象的列表,工作流的变化只涉及创建新的批准状态和更改你的硬编码状态流程序

答案 1 :(得分:0)

django-werewolf正是你所寻找的(https://pypi.python.org/pypi/django-werewolf)。

点击此处的示例应用(https://bitbucket.org/barseghyanartur/django-werewolf/src)。

如有任何问题和支持,请与我联系。