我在 Django 中有一个简单的表单,看起来像这样:
class SearchForm(forms.Form):
text = forms.CharField()
from = forms.DateField()
until = forms.DateField()
失败并出现 SyntaxError,因为from
是一个Python关键字。
我宁愿不更改该字段的名称;它比任何替代方案都更适合,而且我对它对最终用户的外观很挑剔。 (该表单使用“GET”,因此字段名称在 URL 中可见。)
我意识到我可以使用一些东西,比如from_
相反,但我最初认为对于这样的情况可能有某种方法可以显式提供字段名称。 (例如,通过提供name='whatever'
Field 构造函数中的参数。)事实证明没有 https://github.com/django/django/blob/master/django/forms/fields.py#L43.
目前我正在使用动态表格生成 http://jacobian.org/writing/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 关键字?