Django 的站点地图框架在 lastmod 上使用聚合最大函数时出错
Django's sitemap framework giving error when using aggregate max function on lastmod
我正在尝试使用 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
Sitemap
class中的lastmod
方法需要return一个datetime
对象。相反,你正在 return 字典(这是 aggregate
将产生的)——这是无效的。
您需要从该字典中获取数据,并且return:
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']
我正在尝试使用 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
Sitemap
class中的lastmod
方法需要return一个datetime
对象。相反,你正在 return 字典(这是 aggregate
将产生的)——这是无效的。
您需要从该字典中获取数据,并且return:
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']