【发布时间】:2010-08-11 03:35:00
【问题描述】:
我正在设置一些 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')
有人认为这有问题吗?将它们作为列表返回会杀死性能吗?实际上,我们可能会有数百个类别,但可能不会更多。太多了?
【问题讨论】:
标签: django django-urls sitemap