Почему «движок» использует эту переменную.Это может быть скрыто? - PullRequest
0 голосов
/ 14 октября 2011

Представление:

 def GRID_ServerDropDownSearch(request):
         if 'r' in request.GET and request.GET['r']:
        r = request.GET['r']
        servers = SERVERS.objects.get(name=r)
    drives = servers.drives_set.all()[0:]
    memory = servers.memory_set.all()[0:]
    return render_to_response('GRID_ServerDropDownSearchResults.html',
    {'servers':servers, 'query':r, 'drives':drives, 'memory':memory})
    else:
    return render_to_response('GRID_search_form.html', {'error': True})

Форма:

Класс ServerDropDownForm (Form.Form):

r = forms.ModelChoiceField(queryset = SERVERS.objects.all(), required=False)

Шаблон:

 <div>
 <form action="/ServerDropDownSearch/" method="GET">
    {{ form.as_table }}
     <input type = "Submit" value = "Submit">
  </form>
  </div>

Полученная раскрывающаяся форма работает безупречно.Тем не менее, сразу слева от раскрывающегося списка стоит буква «R» (заглавная r).Я знаю, что это связано с "r", указанным в приведенном выше коде.(Если я заменю каждый случай r, скажем, z, то появится «Z»).Тем не менее:

  1. ПОЧЕМУ он становится заглавным?Это просто случай по умолчанию, указанный в движке?
  2. Как я могу скрыть этот «R», чтобы вместо него он мог указывать «Выбрать сервер» или что-то более наглядное.

Заранее спасибо.

1 Ответ

3 голосов
/ 14 октября 2011

Django получает метку для поля формы из соответствующего имени переменной, но «гуманизирует» ее. Например, поле с именем my_variable будет переводиться в «Моя переменная».

Самый простой способ исправить это - присвоить полю более понятное для человека имя:

server = forms.ModelChoiceField(queryset = SERVERS.objects.all(), required=False)

Однако вы также можете передать строку для использования в качестве метки через параметр label поля формы:

r = forms.ModelChoiceField(queryset = SERVERS.objects.all(), required=False, label='Select a server')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...