2017-07-24 1 views
1

Ich brauche eine Hilfe, um Django Abfrage wo meine JSON-Datei sollte diese Daten als Ausgabe erhalten. Ich habe viele Möglichkeiten ausprobiert, aber ich habe es in Bits und nicht komplett bekommen. Ich bin neu in Django und bin lange dabei geblieben. Bitte helfen Sie. Thanks :)Cant herauszufinden, rechts Abfrage für JSON in Django

[{ 
    "Group": "Mars", 
    "count": 10, 
    "Months": "June" 
}, { 
    "Group": "Jupiter", 
    "count": 50, 
    "Months": "June" 
}, { 
    "Group": "Mars", 
    "count": 70, 
    "Months": "July" 
}, { 
    "Group": "Jupiter", 
    "count": 60, 
    "Months": "July" 
}, { 
    "Group": "Mars", 
    "count": 30, 
    "Months": "August" 
}, { 
    "Group": "Jupiter", 
    "count": 40, 
    "Months": "August" 
}]; 

Ich habe versucht, möglicherweise Zählung von Mars und Jupiter in meinem views.py zu erhalten, wie die jetzt json als [{'Group':'Mars','count':10},{'Group':'Jupiter','count':50}] gibt folgt, wird Monate hinzugefügt, die, was immer im nicht und ‚Monate‘ in Charfield ist .

views.py

fm_ds=Details.objects.filter(Group='Jupiter',Div='Cross',Shift='Day').count() 
    m_ds=Details.objects.filter(Group='Mars',Div='Cross',Shift='Night').count() 
    Jupiter_dict={} 
    Jupiter_dict['Group']='Jupiter' 
    Jupiter_dict['count']=fm_ds 
    Mars_dict={} 
    Mars_dict['Group']='Mars' 
    Mars_dict['count']=m_ds 
    print Jupiter_dict 
    print Mars_dict 
    details_dict=[Mars_dict,Jupiter_dict] 
context = {'data_json': json.dumps(details_dict)} 

models.py ist

class Details(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    Div=models.CharField(max_length=200,blank=True, null=True, default=None) 
    Group =models.CharField(max_length=200,blank=True, null=True, default=None) 
    Shift =models.CharField(max_length=200,blank=True, null=True, default=None) 
    Months=models.CharField(max_length=200,blank=True, null=True, default=None) 
+0

Die "Anzahl" ist die Summe für eine bestimmte Gruppe ** in ** einem bestimmten Monat? –

+0

Ja, es ist die Anzahl der Personen in bestimmten Gruppen, die für Tag/Nacht Schicht arbeiten! @ThiagoRossener – meow

+0

Können Sie Ihre Modelle zeigen? – zaidfazil

Antwort

2

Sie können dies tun, mit annotate Funktion, wie,

Details.objects.values('Group', 'months').annotate(count=Count('Group')).order_by('months') 

Ausgang wäre,

<QuerySet [{'count': 5, 'months': 'December', 'Group': 'group1'}, 
    {'count': 3, 'months': 'December', 'Group': 'group3'}, 
    {'count': 10, 'months': 'June', 'Group': 'group1'}, 
    {'count': 10, 'months': 'May', 'Group': 'group1'}, 
    {'count': 6, 'months': 'May', 'Group': 'group3'}]> 

Anzahl wäre die Anzahl der Menschen in einer Gruppe für einen bestimmten Monat, unabhängig von der Shift sie arbeiten.

Hoffe, das ist, was Sie gesucht haben,

+0

ich will sie auch in Bezug auf den Shift. Wie die Gruppe 'Jupiter', die in der Tagesschicht arbeitet, gibt es im Monat Juni 50, im Juli 60 und im August 40. Könnten Sie mir bitte dabei helfen ?! @zaidfazil – meow

+0

Daten sollten genauso wie mein JSON angezeigt werden! Mars und Jupiter für Monat Juni. Mars und Jupiter für Monat Juli und so weiter – meow

+0

Sie könnten einfach eine 'order_by'-Klausel hinzufügen, dort dafür. – zaidfazil

Verwandte Themen