繁体   English   中英

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

[英]Displaying correct data from models in 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'),

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

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

我认为问题出在您看来:

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

在这里,您可以获得Channel实例的queryset,并且在模板中您想从queryset获取名称({{part.name}}),但是它没有一个。 我认为您需要更改过滤器才能获得:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM