构建站点地图,获取:'经理'对象不可订阅

时间:2013-10-02 10:00:37

标签: python django sitemap

我正在为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?

2 个答案:

答案 0 :(得分:5)

BlogSitemap.items()中,您的归档Article.objectsModelManager。您想要返回一个查询集 - 即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()

它有效,希望它能为您提供帮助