Я настраиваю некоторые карты сайта Django. Это работает очень хорошо для всех объектов, которые у меня есть, но мне любопытно, как мне это сделать, если я хочу поместить в карту сайта что-то, с чем не связан ни один объект.
Например, у меня есть список категорий, и я могу просто вернуть набор запросов всех категорий. URL-адреса будут иметь вид example.com/cats/12 или что-то еще. У меня также есть своего рода псевдокорневая категория, которая не связана с объектом категории. Эта страница (example.com/cats/) представляет собой просто представление, включающее все подкатегории без родителя и список продуктов. Дело в том, что я не могу использовать get_absolute_url, потому что нет "корневого" объекта. Мое решение состояло в том, чтобы получить набор запросов в виде списка, добавить объект «Нет», а затем получить соответствующий URL-адрес:
class CatsSitemap(Sitemap):
changefreq = "weekly"
priority = 0.4
def items(self):
cats = list(Category.objects.all())
cats.append(None)
return cats
def location(self, obj):
if(obj != None):
return reverse('cats_sub_category', args=[obj.pk])
else:
return reverse('cats_root')
Кто-нибудь видит в этом проблему? Будет ли возвращение их в виде списка убивать производительность? На самом деле у нас будет, возможно, сотни категорий, но, вероятно, не намного больше. Перебор?