我使用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]
)
答案 0 :(得分:2)
您应该将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()]
)
答案 1 :(得分:1)
我只是有这个问题。如下重写您的ON
模型,并注意选择行中的更改。
Book
答案 2 :(得分:-2)
我将 TOMS.Cells(1, 2).Formula = "=BDP(""" & TOMS.Cells(1, 1).Value & " Corp"", ""ID_ISIN"")"
更改为(tag,tag.value)
,并且有效。