问题描述
||
我知道这是Django中一个非常基本的概念,我已经尝试了本教程,但没有用。我正在使用这样的模型(至少是其中两个模型的样本)设置漫画数据库:
Class Title(models.Model):
title = models.CharField(max_length=256)
vol = models.IntegerField(\"Vol.\")
slug = models.SlugField(blank=True,null=True)
#desc = models.CharField(max_length=256)
class Meta:
ordering = [\'title\']
def get_absolute_url(self):
return \"/comics2/title/%s\" % self.slug
def __unicode__(self):
return self.title
class Issue(models.Model):
title = models.ForeignKey(Title)
number = models.IntegerField(help_text=\"Enter the number only. Do not include the hashtag.\")
writer = models.ManyToManyField(Creator)
我想做的是创建一个页面,显示该标题中所有问题的列表。
但是,我在这样的视图中进行了设置:
class AstonishingXMenIssueListView(ListView):
context_object_name = \"astonishing_list\"
queryset = Issue.objects.filter(title__title=\"Astonishing X-Men\").order_by(\"number\")
template_name = \"comics2/astonishing_list.html\"
我的urls.py看起来像这样:
(r\'^comics2/title/(?P<title_slug>[-\\w]+)/$\',AstonishingXMenIssueListView.as_view(
)),
当然,转到/ uncanny-xmen-v1 /会显示与上面的令人惊讶的链接相同的内容。
显然,这不是一种实用的方式,可以按标题列出问题,以备将来的问题和标题使用,因此我需要对其进行设置,这样就不必单独进行此操作。现在,我尝试按照Django通用视图教程进行操作,但是出现了索引元组错误。
我已经尝试过了,但是没有用。这就是让我获取索引元组错误的原因。
class IssuesByTitleView(ListView):
context_object_name = \"issues_by_title_list\"
template_name = \"comics2/issues_by_title.html\",def get_queryset(self):
title = get_object_or_404(Title,title__iexact=self.args[0])
return Issue.objects.filter(title=title)
有任何想法吗?有人可以用婴儿语言回答吗,因为我是Django和Python的新手,所以简单地告诉我再次看一下教程将无济于事。因此,写出代码可能会有所帮助!谢谢!
解决方法
通常,
IssueByTitleView
是正确的选择。但是,当您在URL正则表达式(URL的“ 5”部分)中使用命名组时,必须通过“ 6”而不是“ 7”来访问URL参数。另外,您必须过滤slug
字段,而不是title
字段:
title = get_object_or_404(Title,slug=self.kwargs[\'title_slug\'])