2014-05-03 31 views
1

我在django面臨一個相當奇怪的問題。我會盡我所能來連貫地解釋它。顯示正確的數據從模型在Django

我需要什麼:

  1. 我有一個從一個叫Channel模型顯示10名列表的頁面。
  2. 這批房源將有鏈接到他們的獨立頁面的每一個正在使用get_absolute_url

點擊這些鏈接會產生產生將顯示該房源的詳細信息的新觀點。

現在,我面對的問題是,當點擊此鏈接時,它會正確生成新視圖,但不會顯示模型Channel中的任何數據。

我的模型如下:

class Channel(models.Model): 
    name = models.CharField(max_length=500) 
    description = models.CharField(max_length=5000) 
    identity = models.IntegerField(primary_key=True, max_length=100) 
    address = models.CharField(max_length=300) 
    phone = models.IntegerField(max_length=10) 
    image = models.ImageField(upload_to="static/img/") 

    def __unicode__(self): 
     return str(self.identity) 

    def get_absolute_url(self): 
     from django.core.urlresolvers import reverse 
     return reverse('channel', kwargs={'channel_url': str(self.identity)}) 

的views.py這個是:

def channel_final(request, channel_url): 
    context = RequestContext(request) 
    partner = Channel.objects.filter(identity__exact=channel_url) 
    content_dict = { 
     'part': partner, 
    } 
    return render_to_response('templates/channel-final.html', content_dict, context) 

生成的鏈接如下所示:localhost:8000/channel/1

Urls.py

url(r'^channel/(?P<channel_url>\w+)/$', views.channel_final, name='channel_partner'), 
+1

你想要顯示但沒有顯示的模板中有什麼? – Alex

+0

@Alex例如,我在我的模板中使用了{{part.name}},它應該顯示模型中的列表名稱,是否正確?它不會在視圖中顯示。 – Newtt

+0

如何嘗試get()而不是過濾器?您可能會收到一個查詢集 – Alex

回答

2

我認爲問題出在你的看法:

partner = Channel.objects.filter(identity__exact=channel_url) 

在這裏你得到的Channel實例的查詢集和模板,你想獲得的域名({{part.name }})來自queryset,但它沒有一個。我認爲你需要改變濾光器來獲得:

partner = Channel.objects.get(identity__exact=channel_url) 
3

filter總是得到一個QuerySet,即使你的標準只符合一個實例。 QuerySet是一個類似列表的容器,因此您需要遍歷它以獲取具有需要訪問的屬性的實際對象。

但實際上,您應該在視圖中使用get而不是filter以僅返回單個對象。

相關問題