当前位置: 首页 > 面试题库 >

使用元组时ChoiceField不会显示空标签

穆宾白
2023-03-14
问题内容

我想做什么

我将在数据库中保留有关比赛的数据。我希望能够按特定条件(尤其是比赛类型)搜索比赛。

关于比赛类型

比赛类型保存在一个元组中。一个简短的例子:

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中的select小部件显示一个空标签,但我没有。任何帮助,将不胜感激:)


问题答案:

我找到了一种解决方案,该解决方案可以按我想要的方式工作,而不会违反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)

模型保持原样。



 类似资料:
  • 我们的应用程序正在使用 gapi.auth.登录进行身份验证。问题是,当用户登录到多个帐户时,不会显示帐户选择下拉列表。目前,为了克服这个问题,应用程序设置。显然,这并不是很有效。 使用时是否可以显示多用户选择下拉列表gapi.auth.signin? 用gapi.auth.authorize代替吗?(相关问题) 非常感谢。

  • 我正在使用 iframe 并在主页中创建四个框架.jsp就像这样...... 还有菜单。jsp,其中包含4个链接,当我单击一个链接并在href标记中时,我正在调用该操作(在struts.xml中定义),该操作正在调用一个类,该类正在返回一些数据,并在SUCCESS上转发给CUSTOMERMAIN。jsp文件,但由于iframe,它没有显示任何jsp文件。 如果我不使用iFramework…它工作正

  • 我试过将图像定位到许多不同的地方,也试过不同的加载图像的方法,但没有一种方法奏效,我已经确保图像在导出的JAR文件中确实正确地出现。

  • 我最近尝试在Libgdx中为我的标签提供背景,因为如果没有自定义皮肤,您将只剩下一些白色文本的空白石板。 使用这里找到的皮肤编辑器,我可以根据自己的喜好制作一个标签样式,我想在我的项目中使用。然而,使用这些文件构建我的皮肤,似乎什么都没有发生。 对于这些文件,我尝试使用: 在我的桌子上使用它: 在我的标签中: 但都无济于事。 有人知道为什么它仍然显示为纯白色文本吗?谢谢您们。 这是uiskin.j

  • 我试图使用Bootstrap 4创建一个导航栏,但在我的div标签项不内联,我不能将我的导航项对齐到右边 这里是HTML

  • 问题内容: 我想使用MUI Grid,并且如果屏幕很小,我想隐藏一项Grid,所以我找到了一个名为Display的东西。我的代码看起来像这样 我不理解为什么它不起作用(文本仍然出现)。不能将显示与Grid一起使用吗?如果是,那为什么呢? 问题答案: 该风格的功能都不会自动支持组件。 利用样式功能的最简单方法是使用Box组件。该组件使所有样式功能(例如display)都可用。所述组件具有组件道具(默