2013-05-03 3 views
1

У меня есть модель вопрос -Джанго 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/физики», говоря, что «индекс списка из диапазона.
В таблице есть физический вопрос. Он отображается на индексной странице уже. Я не понимаю документацию.
Что я здесь делаю неправильно?

ответ

1

В вашем методе:

Вы 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 
+0

О, глупо меня! Спасибо чувак! Я отметю это правильно примерно через 5 минут. – svineet

Смежные вопросы