我想做什么
我将在我的数据库中保留有关比赛的数据。我希望能够按特定标准搜索比赛 - 特别是比赛类型。
关于比赛类型
竞争类型保存在一个元组中。一个稍微缩短的例子:
COMPETITION_TYPE_CHOICES = (
(1, 'Olympic Games'),
(2, 'ISU Championships'),
(3, 'Grand Prix Series'),
)
这些在模型中使用如下(再次 - 这是模型的缩短/简化版本):
class Competition(models.Model):
name = models.CharField(max_length=256)
type = models.IntegerField(choices=COMPETITION_TYPE_CHOICES)
搜索表单
我不希望搜索表单中需要这些字段,因此表单定义如下:
class CompetitionSearchForm(forms.Form):
name = forms.CharField(required=False)
type = forms.ChoiceField(choices=COMPETITION_TYPE_CHOICES,required=False)
问题
我希望 ChoiceField 中的选择小部件显示一个空标签,但我没有得到。对此的任何帮助将不胜感激:)
原文由 Monika Sulik 发布,翻译遵循 CC BY-SA 4.0 许可协议
我找到了一种解决方案,它可以按照我想要的方式工作,而且不会违反 DRY 原则。不是很干净,但我想它必须这样做。
根据 文档 选择不必是元组:
所以我现在要使用的解决方案是:
然后:
该模型保持原样。