2011-10-13 32 views
0

視圖:爲什麼「引擎」會大寫這個變量。它可以隱藏嗎?

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(forms.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」有關。 (如果我用z替換每個r的發生率,則會出現「Z」)。但是:

  1. 爲什麼它會被大寫?這只是引擎中指定的默認情況嗎?
  2. 我該如何隱藏「R」以代替它可以指示「選擇服務器」或更具描述性的內容。

在此先感謝。

+0

「引擎」,如果你是指Django,那麼它什麼也沒做。如果它的大寫,在項目代碼的某個地方,它就會被大寫。不知道你是繼承了這個還是什麼,但是編寫它的人看起來完全不熟悉Python編碼約定。似乎更像Django試圖強制適合.NET模式。 –

+0

是的,那將是我「完全不熟悉Python編碼約定」。 –

回答

3

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') 
+0

太棒了。謝謝。 –

相關問題