在django中显示模型的正确数据

时间:2014-05-03 12:51:21

标签: python django

我在django面临一个相当奇怪的问题。我会尽力解释它。

我需要什么:

  1. 我有一个页面,显示名为Channel的模型中的10个列表。
  2. 这些商家信息中的每一个都会链接到使用get_absolute_url
  3. 生成的独立页面

    点击这些链接将生成一个新视图,该视图将显示该列表的更多详细信息。

    现在,我遇到的问题是,当点击此链接时,它会正确生成新视图,但它不显示模型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'),
    

2 个答案:

答案 0 :(得分:3)

filter 始终获取QuerySet,即使您的条件仅匹配一个实例。 QuerySet是一个类似列表的容器,因此您需要对其进行迭代以获取具有您需要访问的属性的实际对象。

但事实上,您应该在视图中使用get而不是filter来返回单个对象。

答案 1 :(得分:2)

我认为问题在你看来:

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

在这里,您获得了Channel实例的查询集,并且在模板中,您希望从queryset获取名称({{part.name}}),但它没有。我认为您需要更改过滤器来获取:

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