我制作了这个模型:
name = models.CharField(max_length=3, choices=(
('sat', "Saturday"),
('sun', "Sunday"),
('mon', "Monday"),
('tue', "Tuesday"),
('wed', "Wednesday"),
('thu', "Thursday"),
('fri', "Friday"),
), null=False, blank=False, primary_key=True)
,当我想获取对象时,只能访问人类可读的选择名称。 如何通过人类可读的名称获取对象? 我试过了,但是出现了错误:
Days.objects.get(name='saturday')
答案 0 :(得分:0)
这不是很漂亮,但是您可以通过models元属性来反向查找:
CeleryExecutor
您可以将其修改为不区分大小写(以便在您的示例中可以使用)
但是要小心:
答案 1 :(得分:0)
我不明白为什么您不打算使用它们而使用简短版本。我会使用相同的名称两次,例如:
choices=(
('Saturday', "Saturday"),
('Sunday', "Sunday"),
('Monday', "Monday"),
('Tuesday', "Tuesday"),
('Wednesday', "Wednesday"),
('Thursday', "Thursday"),
('Friday', "Friday"),
)
然后
Days.objects.get(name='saturday')
显然可以正常工作,并且您的代码添加了零复杂度。在类似的旧帖子here
中也建议这样做答案 2 :(得分:0)
根据您的情况:instance.get_name_display()
https://docs.djangoproject.com/en/1.11/ref/models/instances/#django.db.models.Model.get_FOO_display