对于具有字段Model
的{{1}},是否可以使用type
获取选择显示值?我尝试了Model.objects.values()
,但没有用。
答案 0 :(得分:2)
您不能那样做。 values
是内置的django queryset方法,用于获取数据字典,而不是模型实例,您可以详细了解here。
将选择项附加到字段模型的常规(正确的方法)是使用像这样的静态变量。
class MyModel(models.Model):
TYPE_CHOICES = (
# (<DB VALUE>, <DISPLAY_VALUE>)
('a', 'Choice A'),
('b', 'Choice B'),
)
type = models.CharField(max_length=1, choices=TYPE_CHOICES)
您可以像这样在模型外部访问类型字段的选择。
MyModel.TYPE_CHOICES
答案 1 :(得分:0)
在我将选择字段的.values
调用到查询集中的情况下,我通过以下方式进行处理:
假设以下模型
from enum import Enum
class TypeChoice(Enum):
a = 'class A'
b = 'class B'
class MyModel(models.Model):
type = models.CharField(max_length=1, choices=[(tag.name,tag.value) for tag in TypeChoice])
使用查询my_qset = MyModel.objects.values('type')
,显示值可作为:
for item in my_qset:
print(TypeChoice[item].value)
要在模板中处理此问题,我写了一个自定义模板过滤器,说type_display
:
from django import template
import TypeChoice
register = template.Library()
@register.filter
def type_display(var):
return TypeChoice[var].value