我有一个模型问题 -
class Question(models.Model):
title = models.CharField(max_length=1024)
content = models.TextField()
answer = models.TextField()
pub_date = models.DateTimeField(auto_now=True)
category = models.CharField(max_length=512)
flags = models.IntegerField()
def __unicode__(self):
return self.title
我有几个cateogries据此我想要显示RSS。我看到了文档并提出了这个 -
class CategoryFeed(Feed):
def get_object(self, request, category):
return Question.objects.filter(category__exact=1)[:1][0]
def title(self, obj):
return "The Quiz Machine: latest questions for category %s" % obj.category
def link(self, obj):
return '/rss/{0}'.format(obj.category)
def description(self, obj):
return "Question for category %s" % obj.category
def items(self, obj):
return Question.objects.filter(category__exact=obj.category).order_by('-pub_date')[:30]
def item_title(self, item):
return item.title
def item_link(self, item):
return '/{0}/'.format(item.id)
但是当我访问'rss / physics'时说'列表索引超出范围'时,它会给我错误。
表中有一个物理问题。它已经显示在索引页面上。我不理解文档。
我在这里做错了什么?
答案 0 :(得分:1)
在你的方法中:
def get_object(self, request, category):
return Question.objects.filter(category__exact=1)[:1][0]
您有category__exact=1
需要category__exact=category
那是:
def get_object(self, request, category):
return Question.objects.filter(category__exact=category)[:1][0]
为了让它更加万无一失,我会这样做:
def get_object(self, request, category):
qs = Question.objects.filter(category__exact=category)[:1]
if qs:
return qs[0]
return None