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

问题描述 投票:0回答:2

我正在为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导入来自blog.models的Sitemap导入文章

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?

python django sitemap
2个回答
5
投票

BlogSitemap.items(),你的回归Article.objects,这是一个ModelManager。你想要返回一个查询集 - 即Article.object.all()Article.objects.filter(someconditionhere)


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()

它有效,希望它可以帮助你

© www.soinside.com 2019 - 2024. All rights reserved.