2017-02-01 4 views
0

J'ai un modèle "Drug" qui a une clé étrangère enfant "Accounting Entry" qui contient une quantité. Il y a plusieurs entrées de comptabilité par médicament et j'ai agrégé la somme des quantités de l'enfant à la drogue comme sumQuantities.Django extrait la valeur de la réponse dict

Le problème que j'ai maintenant que lorsque je suis rendu le modèle que je vois ce qui suit:

Quantité en main
{ 'Quantity__sum': 11} {
'Quantity__sum': 99}
{ « Quantity__sum »: 222}

J'essaie d'obtenir le « Quantity__sum »: 11 pour afficher la valeur de base (11) mais ne peut pas sembler obtenir de fonctionner correctement

Merci beaucoup pour toute aide

models.py

class Drug(models.Model): 
Facility = models.ForeignKey(Facility, on_delete=models.CASCADE) 
Name = models.TextField(max_length=120,default='default') 

def _get_sum_quantity(self): 
    return self.quantities.aggregate(Sum('Quantity')) 

sumQuantity = property(_get_sum_quantity) 

def __str__(self): 
    drug_name = self.Name 
    return drug_name 

class Meta: 
    verbose_name_plural = 'Drugs' 


class AccountingEntry(models.Model): 
    Drug = models.ForeignKey(Drug, on_delete=models.CASCADE, related_name='quantities') 
    Quantity = models.IntegerField(default='0') 


views.py

def update(request): 
    context = locals() 
    template = 'update.html' 
    return render(request, 'update.html', {'drug_list': Drug.objects.all()}) 


HTML Snippet

{% for drug in drug_list %} 
    <td>{{ drug.Name }}</td> 
    <td>{{ drug.sumQuantity }}</td> 
    {% if not forloop.last %} 
     </tr> 
     <tr> 
    {% endif %} 
{% endfor %} 

Répondre

0

Je pense que ces lignes

{'Quantity__sum': 11} 
{'Quantity__sum': 99} 
{'Quantity__sum': 222} 

vient de drug.sumQuantity (situé à l'intérieur du code HTML. Donc, si vous voulez obtenir la valeur de Quantity__sum, vous pouvez faire une notation par points sur la propriété SumQuantity. Donc, vous pouvez avoir quelque chose de similaire à ceci

{% for drug in drug_list %} 
    <td>{{ drug.Name }}</td> 
    <td>{{ drug.sumQuantity.Quantity__sum }}</td> 
    {% if not forloop.last %} 
     </tr> 
     <tr> 
    {% endif %} 
{% endfor %} 
+0

C'était exactement cela, merci, il a immédiatement résolu les valeurs sous-jacentes. Appréciez grandement votre temps pour répondre! –

+0

si cette réponse est correcte, veuillez la marquer comme correcte – e4c5