![](/img/trans.png)
[英]Comparing fields from two models using foreign key.(for displaying correct product under correct category) using django
[英]Displaying correct data from models in django
我在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'),
即使您的条件仅匹配一个实例, 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.