vvo*_*ody 6 django enums django-admin models
我使用 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..
从 1.10开始, Django能够序列化 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]
)
Run Code Online (Sandbox Code Playgroud)
你应该将你的 Django 模型重写为
class LanguageChoice(Enum):
DE = "German"
EN = "English"
CN = "Chinese"
ES = "Spanish"
@classmethod
def all(self):
return [LanguageChoice.DE, LanguageChoice.EN, LanguageChoice.CN, LanguageChoice.ES]
class Book(models.Model):
title = models.CharField(max_length=255)
language = models.CharField(
max_length=5,
choices=[(tag.value, tag.name) for tag in LanguageChoice.all()]
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1873 次 |
| 最近记录: |