我在django面临一个相当奇怪的问题。我会尽力解释它。
我需要什么:
Channel
的模型中的10个列表。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'),
答案 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)