@@ -37,27 +37,29 @@ declaring a `StateMachineField`.
3737``` python
3838
3939from django.db import models
40+ from django.utils.translation import gettext_lazy as _
4041from dsm.fields import StateMachineField
4142
4243
4344class Order (models .Model ):
45+ class Status (models .TextChoices ):
46+ NEW = ' new' , _(' New' )
47+ PROCESSING = ' processing' , _(' Processing' )
48+ SENDING = ' sending' , _(' Sending' )
49+ FINISHED = ' finished' , _(' Finished' )
50+ CANCELLED = ' cancelled' , _(' Cancelled' )
51+
4452 status = StateMachineField(
4553 transitions = (
46- (' new ' , [' confirm' ], ' processing ' ),
47- (' processing ' , [' cancel' ], ' cancelled ' ),
48- (' processing ' , [' send' ], ' sending ' ),
49- (' sending ' , [' deliver' ], ' finished ' ),
54+ (Status. NEW , [' confirm' ], Status. PROCESSING ),
55+ (Status. PROCESSING , [' cancel' ], Status. CANCELLED ),
56+ (Status. PROCESSING , [' send' ], Status. SENDING ),
57+ (Status. SENDING , [' deliver' ], Status. FINISHED ),
5058 ),
59+ choices = Status.choices,
5160 max_length = 16 ,
52- choices = (
53- (' new' , _(' New' )),
54- (' processing' , _(' Processing' )),
55- (' sending' , _(' Sending' )),
56- (' finished' , _(' Finished' )),
57- (' canceled' , _(' Cancelled' )),
58- ),
5961 db_index = True ,
60- default = ' new '
62+ default = Status. NEW ,
6163 )
6264```
6365
0 commit comments