在选择字段上设置空标签给我带来了一些问题。我看过类似的答案this https://stackoverflow.com/questions/14541074/empty-label-choicefield-django,但这只是谈论形式。
假设我有以下模型:
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_CHOICESmodel to:
COLOR_CHOICES = (
('', '---Please select your color---'),
(BLUE, 'Blue'),
(RED, 'Red'),
(GREEN, 'Green'),
2)更改我的COLOR_CHOICESmodel to:
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)可以吗?如果我将其添加到那里会有副作用,还是将其添加到表单上更好?当我在表单中设置空标签时,似乎有相当多的代码。