我在 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/