我想在下拉菜单中显示优先级信息。目前我正在使用整数字段来存储优先级,但我想显示高/中/低,而不是让用户输入优先级。如何在django admin中显示固定的下拉菜单?
一种近似的方法是使用优先级数据库,该数据库存储3个元素,1:高,2:中,3:低,但它看起来像是过度杀伤。
任何更简单的方法将不胜感激!
杰森
我想在下拉菜单中显示优先级信息。目前我正在使用整数字段来存储优先级,但我想显示高/中/低,而不是让用户输入优先级。如何在django admin中显示固定的下拉菜单?
一种近似的方法是使用优先级数据库,该数据库存储3个元素,1:高,2:中,3:低,但它看起来像是过度杀伤。
任何更简单的方法将不胜感激!
杰森
您可以指定字段http://www.djangoproject.com/documentation/models/choices/的选项。
PRIORITY_CHOICES = ((1, 'High'),
(2, 'Medium'),
(3, 'Low'))
class MyModel(models.Model):
priority = models.IntegerField(choices=PRIORITY_CHOICES)
您应该能够选择添加到模型元素
所以:
class myModel(models.Model):
mydata = models.CharField(max_length=4, choices= ((u'H', u'High',), (u'M', u'Medium'), (u'L', u'Low')))
将存储H,M,L在DB,但目前高,中,低。具有选项属性的管理员默认字段为下拉选择器
你可以写你的模型是这样的:
from django.db import models
class Priority(models.Model):
PRIORITY_LOW = 3
PRIORITY_MEDIUM = 2
PRIORITY_HIGH = 1
PRIORITY_CHOICES = (
(PRIORITY_LOW, 'low'),
(PRIORITY_MEDIUM, 'medium'),
(PRIORITY_HIGH, 'high'),
)
priority = models.IntegerField(choices=PRIORITY_CHOICES)
您阅读更多从documentation
你已经混淆了价值/文本的顺序,它应该是例如。 (PRIORITY_LOW,'低') – 2010-06-17 17:49:18
非常感谢您的解决方案!尽管我需要的顺序是错误的,例如。 '低'和PRIORITY_LOW需要交换,以在下拉菜单中打印出低点 – FurtiveFelon 2010-06-17 17:52:22
是的,你是对的,我已经混淆了数值。我用正确的值更新了它们。 – 2010-06-17 18:10:50
我想说分配priorites为整数,而不是字符使得可能更有道理的,因为您可以通过查询集中的优先级更轻松地排序对象(如果需要的话)。 – 2010-06-17 17:41:48
当然,有很多方法可以修改和改进,如果你想。 – mcpeterson 2010-06-17 17:45:13