python - Django RSS feed 按类别

标签 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

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

最佳答案

在你的方法中:

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

关于python - Django RSS feed 按类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16361061/

相关文章:

ruby - 使用 Ruby 解析标签中有冒号的 RSS 项?

python - 使用通用提要解析器 (feedparser) 获取自动发现链接

python - 数据库关系 - 语法

python - 如何仅使用 CASE 或 COALESCE 表达式来过滤 Django 查询集?

Django:需要手动呈现表单选项

rss - 一个 RSS 提要中有多少条目?我可以为 RSS 提要创建页面吗?

聊天机器人的 Python 字符常量

python - 培训不起作用。 "Skipping training since max_steps has already saved"

python - 为什么 conda 安装 pip/setuptools 等...?

Django内联表单集添加另一个并删除