对于值可少量枚举的字段应该优雅的定义一个枚举字段。常见的枚举类型:
- 字符串枚举,对应
models.TextChoices
- 整数枚举,对应
models.IntegerChoices
以整数枚举为例,定义字段前先定义一个枚举对象:
from django.utils.translation import gettext_lazy as _
class TaskStatus(models.IntegerChoices):
WAITING = 0, _('Waiting')
RUNNING = 1, _('Running')
SUCCESS = 2, _('Success')
FAILED = 3, _('Failed')
然后使用choices
参数将普通整型字段变成值受限的字段:
class Task(models.Model):
status = models.IntegerField(choices=TaskStatus.choices, default=TaskStatus.WAITING)
...
字段默认非空(not null, not blank),可以给一个默认值。
评论区