2017-10-17 8 views
3

J'ai besoin de comparer les sommes d'événements dans la même semaine (isocalendar), année après année.Django Query même semaine l'année dernière

class MyModel(models.Model): 
    date = models.DateTime(... 
    hits = models.IntegerField(... 

J'ai cette dernière pour l'année triée, le mois dernier, même mois l'an dernier, le même jour l'année dernière en utilisant des variations sur:

same_month_last_year = MyModel.objects.filter(date__month = (datetime.datetime.now().month), date__year = (datetime.datetime.now() - relativedelta(years = 1)).year).aggregate(total=Sum('hits')['total'] 

Je ne vois pas d'équivalent « semaine » fonction. Je peux utiliser .isocalendar() [1] du côté droit de l'équation mais cela ne sert à rien à gauche. Des idées? Merci.

Répondre

2

Django 1.11 a ajouté un week filter. Pouvez-vous l'utiliser?

Sinon, vous pourriez être en mesure de regarder le code source et de le choisir.

En dernier recours, vous pouvez utiliser Python pour calculer la plage de dates pour la même semaine l'année dernière, puis passer ces dates que les filtres à la requête Django.

+0

Solution parfaite. – William