python - 使用选择创建自定义 Django CharField

标签 python django

我在 models.py 文件中有以下代码:

SENT = 0
ACEPTED = 1
DECLINED = 2

SHARE_STATUSES = (
  (SENT, 'Sent'),
  (ACCEPTED, 'Approved'),
  (DECLINED, 'Declined')
)

status = models.ResultStatusField(max_length=2, choices=STATUS_CHOICES, default=SENT)

我想创建一个带有选择的自定义 Django 字段类型(可以在整个应用程序模块中重复使用,而不是在不同的地方多次复制粘贴)。

我读过 Django reference关于如何创建自定义字段,但不了解如何提供选择。

class ResultStatusField(models.CharField):
  def __init__(self):
    SENT = 0
    ACCEPTED = 1
    DECLINED = 2

    SHARE_STATUSES = (
      (SENT, 'Sent'),
      (ACCEPTED, 'Approved'),
      (DECLINED, 'Declined')
    )

非常感谢您的帮助。

最佳答案

只需将选项添加到关键字参数即可:

class ResultStatusField(models.CharField):

  def __init__(self, *args, **kwargs):

    SENT = 0
    ACCEPTED = 1
    DECLINED = 2

    SHARE_STATUSES = (
      (SENT, 'Sent'),
      (ACCEPTED, 'Approved'),
      (DECLINED, 'Declined')
    )

    kwargs['choices'] = SHARE_STATUSES
    kwargs['default'] = SENT
    kwargs['max_length'] = 2

    super(ResultStatusField, self).__init__(*args, **kwargs)

关于python - 使用选择创建自定义 Django CharField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28538082/

相关文章:

python - 嵌套列表 django

python - Python列表中第n大项的索引

Python 扭曲了 Web 服务器缓存并执行过时的代码

python - Django 模型对象和 Graphene get_node

Python - 测试属性抛出异常

django - 将 gettext 的 .mo 文件保存在 repo 中的好处

python - 使用 python 和 twitterApi 将多个图像添加到推文?

Django:如何触发新模型的 ContentTypes 创建?

python - Django 枪兽 : Error when calling the metaclass bases

python - 我将如何覆盖 django rest 框架中的 perform_destroy 方法?