/ lastmodでaggregate max関数を使用するとエラーが発生する/ Djangoのサイトマップフレームワーク - python、django、sitemap、django-2.0

Djangoのsitemapフレームワークがlastmodにaggregate max関数を使用するとエラーを返す - python、django、sitemap、django-2.0

私はDjangoのサイトマップフレームワークを使おうとしています特徴。このコードを実装したので、現在の記事オブジェクトpost_dateで機能します。ただし、次のコードを使用してより正確な最終更新日を取得しようとすると、エラーが発生します。エラーのトレースバック http://dpaste.com/3Z04VH8

よろしく。 助けてくれてありがとう

from django.contrib.sitemaps import Sitemap
from django.db.models import Max
from article.models import Article


class ArticleSitemap(Sitemap):
changefreq = "hourly"
priority = 0.5

def items(self):
return Article.objects.all()

def lastmod(self, obj):
from post.models import Post
return Post.objects.filter(article=obj).aggregate(Max("post_date"))
#return obj.post_date

回答:

回答№1は0

lastmod メソッドの Sitemap クラスはを返す必要があります datetime オブジェクト代わりにあなたは辞書を返しています aggregate )を生成します - これは無効です。

その辞書の中からデータを取得し、それを返す必要があります。

result = Post.objects.filter(article=obj).aggregate(Max("post_date"))
# result will look something like {"post_date__max": Datetime("2017-12-06")}
return result["post_date__max"]