【发布时间】:2016-09-10 11:00:17
【问题描述】:
在选择字段上设置空标签给我带来了一些问题。我看过this 之类的答案,但这只是在谈论表单。
假设我有以下模型:
class MyColorModel(models.Model):
BLUE = 'blue'
RED = 'red'
GREEN = 'green'
COLOR_CHOICES = (
(BLUE, 'Blue'),
(RED, 'Red'),
(GREEN, 'Green'))
my_color = models.CharField(max_length=5, choices=COLOR_CHOICES, blank=True)
还有这个表格:
class MyColorForm(forms.ModelForm):
class Meta:
model = MyColorModel
fields = ['mycolor']
默认情况下,这将显示一个选择字段,空白标签设置为 ------
我想出了以下选项来设置标签。
1) 将我的模型中的 COLOR_CHOICES 更改为:
COLOR_CHOICES = (
('', '---Please select your color---'),
(BLUE, 'Blue'),
(RED, 'Red'),
(GREEN, 'Green'),
2) 将我的 model 中的 COLOR_CHOICES 更改为:
COLOR_CHOICES = (
(None, '---Please select your color---'),
(BLUE, 'Blue'),
(RED, 'Red'),
(GREEN, 'Green'),
3) 将以下 init 方法添加到我的模型 form 中:
def __init__(*args, **kwargs):
super(MyColorForm, self).__init__(*args, **kwargs)
self.fields['my_color'].choices = [('', '---Please select your color---')] + MyColorModel.COLOR_CHOICES
选项 1 导致了一些副作用,即我开始失败的 if 语句,这就是导致我创建选项 2 的原因。
在我的模型中添加空白标签是否可以(选项 2)?如果我在那里添加它会有任何副作用,还是在表单上添加它更好?当我在表单中设置空标签时,似乎有很多代码。
【问题讨论】: