在Django Admin中实现工作流 - Django
我有一个不错的管理面板,用户可以在网站上管理数据。
问题是我需要实现一个工作流程,让保存的模型可以在不同的阶段进行审批,最后才能发布。
因为我只需要处理一个模型,我想到了添加一个布尔值字段'approved_for_publishing'(是否批准发布)和一个'manytomany'字段'approved_by'(批准人)。
现在的问题是如何把这些内容整合到管理面板里。
如果有人对此有一些看法,那就太好了。=)
2 个回答
0
django-werewolf正是你需要的东西(https://pypi.python.org/pypi/django-werewolf)。
你可以在这里查看示例应用(https://bitbucket.org/barseghyanartur/django-werewolf/src)。
如果有任何问题或者需要帮助,可以联系我。
1
之前我做过类似的功能,这里是你需要做的事情:首先,创建一个审批状态模型,并且有不同的审批变体,也就是说每个模型对象代表不同的审批阶段。同时,你还需要一个状态历史模型,用来反映你的文章(例如)当前的状态。
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)
所以,当你在管理后台更改文章的状态时,会创建一个新的状态历史对象,而旧的对象会被标记为当前状态为假(current=False)。这种方法看起来有点复杂,但一旦你实现了它,所有的内容就会很容易地融入到ORM(对象关系映射)中:状态历史只是所有对象的一个列表,工作流程的变化只涉及创建新的审批状态和修改你之前写好的状态流程序。