我正在使用Django 1.0.2。我已经写了一个由模型支持的ModelForm。此模型具有一个ForeignKey,其中blank = False。当Django为该表单生成HTML时,它会创建一个选择框,其中对ForeignKey引用的表中的每一行都有一个选项。它还在列表顶部创建一个没有值的选项,并显示为一系列破折号:
<option value="">---------</option>
我想知道的是:
<option value="">Select Item</option>
在寻找解决方案时,我遇到了Django票证4653,给我的印象是其他人也有同样的问题,并且Django的默认行为可能已被修改。这张票已经使用了一年多,所以我希望可以有一种更清洁的方式来完成这些事情。
谢谢你的帮助,
杰夫
编辑:我已经配置了ForeignKey字段为:
verb = models.ForeignKey(Verb, blank=False, default=get_default_verb)
这确实设置了默认值,因此不再是空/破折号选项,但是不幸的是它似乎无法解决我的任何一个问题。即,空/破折号选项仍出现在列表中。
还没有测试过,但是基于在这里和这里阅读Django的代码,我相信它应该可以工作:
class ThingForm(models.ModelForm):
class Meta:
model = Thing
def __init__(self, *args, **kwargs):
super(ThingForm, self).__init__(*args, **kwargs)
self.fields['verb'].empty_label = None
编辑:这已记录在案,尽管如果你正在使用自动生成的ModelForm,则不一定知道要查找ModelChoiceField。
编辑:正如jlpp在他的回答中指出的那样,这还不完整-更改empty_label属性后,你必须将选项重新分配给小部件。由于有点黑,所以可能更容易理解的另一个选项是覆盖整个ModelChoiceField:
class ThingForm(models.ModelForm):
verb = ModelChoiceField(Verb.objects.all(), empty_label=None)
class Meta:
model = Thing
问题内容: 我是AngularJS的新手。我进行了很多搜索,但是并不能解决我的问题。 我第一次在选择框中得到一个空白选项。 这是我的HTML代码 JS 但这似乎不起作用。我该如何解决?这是JSFiddle演示 问题答案: 当传递给的一组选项中不存在被引用的值时,将生成空值。这样做是为了防止意外选择模型:AngularJS可以看到初始模型是未定义的还是未在选项集中,并且不想自行决定模型的值。 简而言
问题内容: 我有一个很奇怪的要求,其中要求我默认在HTML的下拉菜单中没有选择任何选项。然而, 我不能用这个 因为,为此,我将必须进行验证以处理第一个选项。有人可以在没有将第一个选项作为select标签的一部分的情况下帮助我实现此目标吗? 问题答案: 也许这会有所帮助 将默认显示。但是,如果您选择一个选项,则将无法再次选择它。 您也可以通过添加一个空白来隐藏它 因此它将不再显示在列表中。 选项2
问题内容: 如何从选择框中删除项目或向其中添加项目?我正在运行jQuery,这应该使任务更轻松。下面是一个示例选择框。 问题答案: 删除一个选项: 添加一个选项:
问题内容: 我有一个Django应用程序,想要在用户的个人资料中显示多个选择复选框。然后,他们将能够选择多个项目。 这是我的models.py的简化版本: 和我的形式课: 还有我的views.py: 我可以看到POST仅发送一个值: 并且本地vars参数正在发送一个列表: 所有表单字段都显示正确,但是当我提交POST时,我得到一个错误 错误绑定参数7-可能是不受支持的类型。 我是否需要在视图中进一
问题内容: 我们有一个选择器,可以在元素 完全为空 时匹配它: 但我有一个条件,其中可能为空,或者可能包含换行符或空格: 我找到了Firefox的解决方案: 其他浏览器有类似的解决方案吗? 问题答案: 很多人错过了这个问题的要点,在下面的博览会中我已经解决了这个问题,但是对于那些只想寻找答案的人,我在这里反映了最后一段: 选择器4现在重新定义 为包括仅包含空格的元素。最初是作为单独的伪类提出的,但
问题内容: 我想建立一个国家/州选择器。首先,您选择一个国家,然后在第二个选择框中显示该国家的州。在PHP和jQuery中执行此操作相当容易,但我发现Django表单在某种意义上具有一定的局限性。 我可以将“状态”字段设置为在页面加载时为空,然后使用一些jQuery填充该字段,但是如果出现表单错误,它将无法“记住”您选择的状态。我也很确定它会引发验证错误,因为您的选择不是Python方面表单中列出