Tengo una forma sencilla de Django, que se ve algo como esto:¿Cómo declarar un campo de formulario en Django, si tiene el mismo nombre que una palabra clave de Python?
class SearchForm(forms.Form):
text = forms.CharField()
from = forms.DateField()
until = forms.DateField()
Qué falla con un SyntaxError, porque from
es una palabra clave Python.
Prefiero no cambiar el nombre del campo; Se adapta mejor que cualquiera de las alternativas, y soy quisquilloso acerca de cómo le parece al usuario final. (El formulario está utilizando 'GET', por lo que el nombre del campo es visible en la URL.)
Soy consciente de que sólo podía usar algo, como from_
lugar, pero yo estaba en principio pensamos que podría haber alguna manera de proporcionar explícitamente la nombre de campo, para casos como este. (Por ejemplo, suministrando un parámetro name='whatever'
en el constructor de Campo). No está disponible there isn't.
Por el momento estoy usando dynamic form generation para moverse por la cuestión, que no es tan malo, pero aún así es un poco de un truco ...
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_']
¿Hay alguna forma más elegante de tener un campo de formulario llamado from
, o cualquier otra palabra clave de Python?
mayúscula en la palabra? Estoy bastante seguro de que las palabras clave son solo minúsculas. – Delyan
algo similar es establecer la etiqueta en __init__ ... http://stackoverflow.com/questions/636905/django-form-set-label – jcfollower
La etiqueta es la descripción textual, no el parámetro de consulta que se usa, por lo que eso no hace el truco –