在Django中自定义工作流可以通过以下步骤实现:
MyModel
的模型,并在其中添加一个字段来表示工作流状态,例如status
字段。from django.db import models
class MyModel(models.Model):
STATUS_CHOICES = (
('draft', 'Draft'),
('review', 'Review'),
('published', 'Published'),
)
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='draft')
django-fsm
库。from django.db import models
from django_fsm import FSMField, transition
class MyModel(models.Model):
STATUS_CHOICES = (
('draft', 'Draft'),
('review', 'Review'),
('published', 'Published'),
)
status = FSMField(default='draft')
@transition(field=status, source='draft', target='review')
def submit_for_review(self):
pass
@transition(field=status, source='review', target='published')
def publish(self):
pass
添加状态转换方法:在模型中添加方法来实现不同状态之间的转换。这些方法需要使用装饰器来指定源状态和目标状态。
使用状态转换:在代码中使用状态转换方法来执行相应的状态转换操作。例如,可以调用submit_for_review()
方法将状态从“draft”转换为“review”,然后调用publish()
方法将状态从“review”转换为“published”。
参考文档: