我找到了一种解决方案,该解决方案可以按我想要的方式工作,而不会违反DRY原理。不是很干净,但是我想必须这样做。
根据文档,选择不必是元组:
最后,请注意,选择可以是任何可迭代的对象-
不一定是列表或元组。这使您可以动态构造选择。但是,如果您发现黑客的选择是动态的,那么最好使用带有ForeignKey的正确数据库表。选择是针对不变的静态数据(如果有的话)。
因此,目前我要解决的方案是:
COMPETITION_TYPE_CHOICES = [ (1, 'Olympic Games'), (2, 'ISU Championships'), (3, 'Grand Prix Series'),]COMP_TYPE_CHOICES_AND_EMPTY = [('','All')] + COMPETITION_TYPE_CHOICES
接着:
class CompetitionSearchForm(forms.Form): name = forms.CharField(required=False) type = forms.ChoiceField(choices=COMP_TYPE_CHOICES_AND_EMPTY, required=False)
模型保持原样。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)