我正在为Django构建一个站点地图。我主要按照djangoproject sitemaps
的说明进行操作这是我的错误消息:
lib/python2.7/site-packages/django/core/paginator.py", line 45, in page
return Page(self.object_list[bottom:top], number, self)
TypeError: 'Manager' object is not subscriptable
这是我的sitemap.py: 来自django.contrib.sitemaps导入Sitemap 来自blog.models导入文章
class BlogSitemap(Sitemap):
changefreq = "monthly"
priority = 0.5
def items(self):
return Article.objects
def lastmod(self, obj):
return obj.created_at
def location(self, obj):
return obj.get_absolute_url(False)
这是我的urls.py:
sitemaps = {
'blog' : BlogSitemap,
}
urlpatterns = ...
...),
url(r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps})
)
如何启动并运行我的sitemap.xml?
答案 0 :(得分:5)
在BlogSitemap.items()
中,您的归档Article.objects
为ModelManager
。您想要返回一个查询集 - 即Article.object.all()
或Article.objects.filter(someconditionhere)
等
答案 1 :(得分:0)
我在Django中也遇到了同样的问题。在模型中,我定义了ModelManager:
class WriterDraftManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(pub="draft").order_by("-createdIn")
在Viwset中,我尝试使用
class AritcleOpenView(APIView):
@staticmethod
def get(request):
paginator = StandardSetPagination()
query_set =Article.published
page = paginator.paginate_queryset(query_set, request)
serializer = ALLFormatSerializer(page, many=True, context=serializer_context)
return paginator.get_paginated_response(serializer.data)
它显示与您一样的错误消息,所以我更改了
Article.published
到
Article.published.all()
它有效,希望它能为您提供帮助