Django RSS feed根据类别提供

时间:2013-05-03 14:17:52

标签: python django rss

我有一个模型问题 -

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'时说'列表索引超出范围'时,它会给我错误。
表中有一个物理问题。它已经显示在索引页面上。我不理解文档。 我在这里做错了什么?

1 个答案:

答案 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
相关问题