2017-10-19 16 views
0

Je modules de remorquage (classes) sur django python comme cet exemple ci-dessous:obtenir la valeur et la somme des tables de relations sur django

#first one 
class Names(models.Model): 
    name = models.CharField(max_length=200) 
    type = models.ForeignKey(Types) 
    value = models.IntegerField() 

#second one 
class Type(models.Model): 
    name = models.CharField(max_length=200) 

comme vous le voyez, la classe Names ont relation avec la classe Type alors comment faire une formule pour obtenir le nombre total de noms et la somme des valeurs dans toutes les classes de type pour obtenir le résultat quelque chose comme ceci par exemple:

type1_total_names = 4 
type1_sum_val = 22 

Répondre

1

ce qui suit regroupera les données de type et somme de valeur. Vous trouverez la somme dans sum_value

from django.db.models import Count 

query = (Names.objects 
       .values('type') 
       .annotate(sum_value=Count('value')) 
+0

@hayder-t-il résoudre le problème? – Jonathan

0

Pour query the related objects vous pouvez essayer le code ci-dessous:

type_1_obj = Type.objects.get(pk=1) 
type_1_total_names = type_obj.names_set.all().count() 
type_1_sum_val = type_obj.names_set.all().aggregate(sum_val=Sum('value'))['sum_val']