【发布时间】:2011-12-07 17:08:45
【问题描述】:
我在 Django 中有一个简单的表单,看起来像这样:
class SearchForm(forms.Form):
text = forms.CharField()
from = forms.DateField()
until = forms.DateField()
因为 from 是 Python 关键字而失败并出现 SyntaxError。
我宁愿不更改字段的名称;它比任何替代品都更适合,而且我对最终用户的外观很挑剔。 (表单使用 'GET',因此字段名称在 URL 中可见。)
我意识到我可以改用 from_ 之类的东西,但我最初认为可能有某种方法可以显式提供字段名称,例如这种情况。 (例如,通过在 Field 构造函数中提供name='whatever' 参数。)结果是there isn't。
目前我正在使用dynamic form generation 来解决这个问题,这还不算太糟糕,但它仍然有点小技巧......
class SearchForm(forms.Form):
text = forms.CharField()
from_ = forms.DateField()
until = forms.DateField()
def __init__(self, *args, **kwargs):
super(SearchForm, self).__init__(*args, **kwargs)
self.fields['from'] = self.fields['from_']
del self.fields['from_']
有没有更优雅的方式来拥有一个名为 from 的表单字段或任何其他 Python 关键字?
【问题讨论】:
-
将单词大写?我很确定关键字只是小写。
-
类似的事情是在 init 中设置标签 ...stackoverflow.com/questions/636905/django-form-set-label
-
标签是文本描述,而不是使用的查询参数,所以这不起作用。
-
所以问题假设您使用表单 action=GET?
-
我认为添加一个带有 http 表单字段名称的额外字段参数将是表单字段类的一个很好的新功能。