Djangoでワークフローをカスタマイズする方法

Django で独自のワークフローをカスタマイズするには、次の手順を行います。

  1. それは私をとてもイライラさせます。
  2. ステータス
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')
  1. 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
  1. 状態遷移メソッド追加:複数の状態間の遷移を実現するメソッドをモデルに追加します。このメソッドは、デコレータを使用して開始状態と終了状態を指定する必要があります。
  2. 状態遷移の利用:コード内で状態遷移手法を用いて、それに応じた状態遷移処理を実行できます。 例えば、「submit_for_review()」メソッド呼び出しにより、「draft」状態から「review」状態へ遷移でき、「publish()」メソッド呼び出しによって「review」状態から「published」状態へ遷移できます。

参照資料:

  1. Django FSMドキュメント: https://django-fsm.readthedocs.io/en/latest/
bannerAds