1

我有一个模型问题 -

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

我有几个类别,我希望根据这些类别显示 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”说“列表索引超出范围”时,它给了我错误。
表中有一道物理题。它已经显示在索引页面上。我不理解文档。
我在这里做错了什么?

4

1 回答 1

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
于 2013-05-03T14:26:57.900 回答