2013-04-25 82 views
2

在我的數據庫作業表中,狀態字段的值爲「New_Mexico」。但我需要顯示在HTML頁面,如「新墨西哥州」。爲查找和替換提供一些想法。Django在模板中用下劃線替換空格

views.py

def result(request,user_id): 
    userid=user_id 
    query = Q(emp__companyname=userid) | Q(state=userid) 
    details=jobs.objects.filter(query).select_related() 
    return render_to_response('result.html', {'details': details}) 

result.html

{% for d in details %} 
    <label>{{ d.state }}</label> 
{% endfor %} 

回答

5

如果使用{{ object }}的時候應該是默認的輸出,那麼你應該重寫你的模型是這樣的__unicode__方法:

class MyModel(models.Model): 
    title = models.CharField(...) # this field may hold our string "New_Mexico" 
    ... 
    def __unicode__(self): 
    return self.title.replace('_', ' ') 

一種不同的方法可能會使用{{ object.human_readable_title }},在那裏你在定義一個方法你型號:

def human_readable_title(self): 
    return self.title.replace('_', ' ') 

我看不出有任何理由來構建自己的模板標籤用於該用途的情況下,除非你想用它爲不同型號的許多領域。

編輯: 看來你在「jobs」類中有一個叫做「state」的字段。所以你的情況,一個解決辦法是:在 模型類創建一個方法

def human_readable_state(self): 
    return self.state.replace('_', ' ') 

,並在模板中使用:

<label>{{ d.human_readable_state }}</label> 

這應該做的伎倆。

+0

其不工作 – Karthik 2013-04-25 10:06:21

+0

現在我添加我的意見和模板供用戶參考。對於'{{object.human_readable_title}}', – Karthik 2013-04-25 10:34:51

+0

+1,模型類方法是格式化模板輸出和django管理視圖的最佳選擇。 – FallenAngel 2013-04-25 10:38:20