【发布时间】:2018-12-01 03:48:53
【问题描述】:
我使用 enum.Enum 作为字段语言的选择。
我可以通过b = Book(title="Some Title", language=LanguageChoice.EN)创建一本书。
并通过books = Book.objects.filter(languge=LanguageChoice.EN)查询。
但是,当我想在管理面板上创建新书时,它会显示Select a valid choice. LanguageChoice.EN is not one of the available choices.。
Django 从 1.10 开始就有ability to serialize enum.Enum。那么管理面板应该如何工作呢?谢谢。
from enum import Enum
from django.db import models
class LanguageChoice(Enum):
DE = "German"
EN = "English"
CN = "Chinese"
ES = "Spanish"
class Book(models.Model):
title = models.CharField(max_length=255)
language = models.CharField(
max_length=5,
choices=[(tag, tag.value) for tag in LanguageChoice]
)
【问题讨论】:
-
序列化它们的能力并不意味着将它们用作选择值的能力。
标签: django enums django-admin models