Многомодельный RSS-канал в Django
Я пытаюсь понять, как иметь многомодельный RSS канал в Django. То есть, я хочу, чтобы Django обслуживал обновления двух различных моделей по одному RSS url.
Вот что у меня есть на данный момент
class ArticleFeed(Feed):
title = "Articles"
link = "/articles/"
description = "RSS feed of Articles"
def items(self):
return Article.objects.filter(is_published=1)
def item_title(self, item):
return item.title
def item_description(self, item):
return item.get_description()
def item_link(self, item):
return item.get_absolute_url()
class VideoFeed(Feed):
pass
class atomFeed(Feed):
feed_type = Atom1Feed
В urls.py у меня есть следующий путь
path('rss/', ArticleFeed(), name="article_feed"),
Я хотел бы rss/
предоставить обновления для модели Статьи и Видео. Модель Video имеет аналогичные поля, но является невербатимной.
Вы можете использовать queryset3 = queryset1.union(queryset2) для объединения элементов двух разных моделей и использовать это в feed.items(self):
def items(self):
query1 = Article1.objects.filter(is_published=1)
query2 = Article2.objects.filter(is_published=1)
query = query1.union(query2)
# do any sorting AFTER union
query_sorted = query.order_by('a_field', 'another_field')
self.item_count = query_sorted.count()
return query_sorted
union() работает до тех пор, пока запросы имеют одинаковые поля.
примечание: выше представлен "псевдо" код - я не запускал его, поэтому в нем могут быть синтаксические ошибки