/ / La structure de sitemap de Django donnant une erreur lors de l'utilisation de la fonction d'agrégat max sur lastmod - python, django, sitemap, django-2.0

La structure Sitemap de Django générant une erreur lors de l'utilisation de la fonction d'agrégat max sur lastmod - python, django, sitemap, django-2.0

J'essaie d'utiliser le framework de sitemap de Djangofonctionnalité. "J'ai implémenté le code et il fonctionne avec les objets article courants post_date. Cependant, j'essaie d'obtenir une date de dernière modification plus précise à l'aide du code suivant, ce qui me donne une erreur. Traceback d'erreur http://dpaste.com/3Z04VH8

Cordialement. Merci pour toute aide

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

Réponses:

0 pour la réponse № 1

le lastmod méthode dans le Sitemap la classe doit retourner un datetime objet. Au lieu de cela, vous retournez un dictionnaire (qui est ce que aggregate produira) - qui est invalide.

Vous devez récupérer les données à l'intérieur de ce dictionnaire et renvoyer ce qui suit:

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"]