如何在Django模型中将枚举用作选择字段?
如何在Django模型中将枚举用作选择字段?
我有一个模型类,我希望其中的两个字段是选择字段,因此为了填充这些选择,我正在使用以下的枚举:
# models.py class Transaction(models.Model): transaction_status = models.CharField(max_length=255, choices=TransactionStatus.choices()) transaction_type = models.CharField(max_length=255, choices=TransactionType.choices()) # enums.py class TransactionType(Enum): IN = "IN", OUT = "OUT" @classmethod def choices(cls): return tuple((i.name, i.value) for i in cls) class TransactionStatus(Enum): INITIATED = "INITIATED", PENDING = "PENDING", COMPLETED = "COMPLETED", FAILED = "FAILED" ERROR = "ERROR" @classmethod def choices(cls): return tuple((i.name, i.value) for i in cls)
然而,当我试图通过Django Admin访问这个模型时,我得到了以下错误:
Django Version: 1.11 Exception Type: ValueError Exception Value: too many values to unpack (expected 2)
我按照两篇文章的描述使用了枚举:
- [https://hackernoon.com/using-enum-as-model-field-choice-in-django-92d8b97aaa63](https://hackernoon.com/using-enum-as-model-field-choice-in-django-92d8b97aaa63)
- [https://blog.richard.do/2014/02/18/how-to-use-enums-for-django-field-choices/](https://blog.richard.do/2014/02/18/how-to-use-enums-for-django-field-choices/)