Mam prosty formularz w Django, który wygląda mniej więcej tak:Jak zadeklarować pole formularza w Django, jeśli ma ono taką samą nazwę jak słowo kluczowe Python?
class SearchForm(forms.Form):
text = forms.CharField()
from = forms.DateField()
until = forms.DateField()
która nie z SyntaxError, ponieważ from
jest kluczowe Python.
Ja raczej nie zmieniam nazwy pola; Pasuje lepiej niż jakakolwiek alternatywa i jestem wybredny, jeśli chodzi o to, jak wygląda dla użytkownika końcowego. (Formularz używa "GET", więc nazwa pola jest widoczna w adresie URL.)
Zdaję sobie sprawę, że mógłbym po prostu użyć czegoś, np. from_
zamiast tego, ale początkowo sądziłem, że może istnieć jakiś sposób wyraźnego dostarczenia nazwa pola, w takich przypadkach. (np. Podając parametr name='whatever'
w konstruktorze pól.) Wyłączyło się there isn't.
Obecnie używam dynamic form generation dostać się wokół kwestii, która nie jest tak źle, ale to jeszcze trochę hack ...
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_']
Czy istnieje bardziej elegancki sposób posiadające pole formularza o nazwie from
lub inne słowo kluczowe Python?
Zainwestuj słowo? Jestem pewien, że słowa kluczowe są tylko małe. – Delyan
coś podobnego jest ustawić etykietę w __init__ ... http://stackoverflow.com/questions/636905/django-form-set-label – jcfollower
Etykieta jest tekstowy opis, a nie parametr zapytania, który zostanie użyty, więc to nie działa. –