Я создал подкласс Feed для экспорта простой ленты новостей
#urls.py
from django.conf.urls.defaults import *
from litenewz.feeds import NewsFeed
feeds = {
'news': NewsFeed,
}
urlpatterns = patterns(
'',
(r'^feeds/(?P<url>.*)/$',
'django.contrib.syndication.views.feed',
{'feed_dict': feeds}),
)
#feeds.py
from django.contrib.syndication.feeds import Feed
from litenewz.models import News
class NewsFeed(Feed):
title = 'example news'
link = 'http://example.net'
description = 'Latest Newz from example.'
item_author_name = '...'
item_author_email = '...'
item_author_link = 'http://example.net'
def items(self):
return News.objects.order_by('-time')[:15]
#models.py
from django.db import models
from django.utils.translation import ugettext as _
from datetime import datetime
class News(models.Model):
class Meta:
ordering = ('-time', )
verbose_name = _('News')
verbose_name_plural = _('News')
title = models.CharField(
_('Title'),
max_length=512)
time = models.DateTimeField(
_('Date and time'),
default=datetime.now
)
content = models.TextField(
_('Content'))
def __unicode__(self):
return self.title
@models.permalink
def get_absolute_url(self):
return ('home', (), {})
Как видите, метод Feed
subclass 'items()
возвращает первые 15 объектов в News.objects.order_by('-time')
:
def items(self):
return News.objects.order_by('-time')[:15]
Тем не менее, в ленте экспортируется только один элемент: hxxp: //www.sshguard.net/litenewz/feeds/news/
К сожалению, есть два объекта модели News:
>>> from litenewz.models import *
>>> News.objects.all()
[<News: Version 1.5 and timing>, <News: SSHGuard news>]
Любая помощь?
Я предпочитаю не переходить на Django 1.2, если только это не является строго необходимым для решения описанной проблемы.
Обновление: возвращенный RSS действительно содержит оба объекта, но RSS недействителен, и поэтому читатели, такие как Safari, обманываются: