J'ai créé une instruction avec l'API queryset de Django qui me donne des moyennes hebdomadaires pour certaines données de ma base de données.Annotation des valeurs hebdomadaires
Les données renvoyées sont dans ce format: (6, 4,0), (9, 5.0) ... etc où la première valeur dans chaque tuple représente le numéro de la semaine et la deuxième valeur représente une moyenne de Les données.
Cependant, les semaines ne sont pas séquentielles et ne sont incluses que s'il existe des données pour cette semaine. Remarquez comment la première semaine est 6 et la deuxième semaine est 9. Je voudrais obtenir les semaines 6, 7, 8, 9 au lieu de seulement retourner les semaines pour lesquelles des données existent. Est-ce possible à l'aide de jeux de requêtes et d'annotations Django?
data = post_queryset.annotate(week=WeekFunc('post__start_time')) \
.values_list('week') \
.annotate(sum=Sum('goods')) \
.order_by('week')
Semaine est une extension de la Func classe
class WeekFunc(Func):
def as_mysql(self, compiler, connection):
self.function = 'WEEK'
return super(WeekFunc, self).as_sql(compiler, connection)
post_queryset est un queryset qui est passé à cette fonction
Ajoutez le code que vous avez actuellement, y compris la partie du modèle qui est pertinente. (Utilisez "Modifier", ne le publiez pas dans un commentaire.) – Risadinha
Fait! Merci... – zubhav