1

我正在为 Django 构建站点地图。我主要按照djangoproject 站点地图上的说明进行操作

这是我的错误信息:

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: from django.contrib.sitemaps import Sitemap from blog.models import Article

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 启动并运行?

4

2 回答 2

10

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

于 2013-10-02T10:08:11.247 回答
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)

它显示了像你这样的错误消息,所以我改变了

文章发表

文章.published.all()

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

于 2018-09-12T06:59:52.263 回答