侧边栏壁纸
  • 累计撰写 218 篇文章
  • 累计创建 59 个标签
  • 累计收到 5 条评论

Django - 优雅的定义一个枚举字段

barwe
2022-10-25 / 0 评论 / 0 点赞 / 1,166 阅读 / 455 字
温馨提示:
本文最后更新于 2023-06-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

对于值可少量枚举的字段应该优雅的定义一个枚举字段。常见的枚举类型:

  • 字符串枚举,对应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),可以给一个默认值。

0

评论区