/ / Djangos Sitemap-Framework gibt einen Fehler aus, wenn die aggregierte Max-Funktion auf lastmod verwendet wird - Python, Django, Sitemap, Django-2.0

Djangos Sitemap-Framework gibt Fehler bei der Verwendung der Aggregat-Max-Funktion auf lastmod - python, django, sitemap, django-2.0

Ich versuche, das Sitemap-Framework von Django zu verwendenMerkmal. Ich habe den Code implementiert und er funktioniert mit den aktuellen Artikelobjekten post_date. Ich versuche jedoch, mit dem folgenden Code ein genaueres Datum der letzten Änderung zu ermitteln, und es tritt ein Fehler auf. Rückverfolgung des Fehlers http://dpaste.com/3Z04VH8

Grüße. Danke für jede Hilfe

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

Antworten:

0 für die Antwort № 1

Das lastmod Methode in der Sitemap Klasse muss zurückgeben a datetime Objekt. Stattdessen geben Sie ein Wörterbuch zurück (das ist was aggregate wird produzieren) - was ungültig ist.

Sie müssen die Daten aus diesem Wörterbuch abrufen und Folgendes zurückgeben:

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