2017-07-24 58 views
1

我需要一个帮助来获得Django的查询,我的json文件应该得到这些数据作为输出。我尝试了很多方法,但即时获得它并不完全。我是Django的新手,并且坚持了很久。请帮忙。谢谢:)不能找出Django的正确查询集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" 
}]; 

我也可能试图让火星和木星的计数我views.py如下这给JSON作为[{'Group':'Mars','count':10},{'Group':'Jupiter','count':50}]几个月来加入这是林没有得到和“月”在charfield 。

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是

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

“count”是特定组**在特定月份中的总数** –

+0

是的,这是特定群体中为白天/夜班工作的人数! @ThiagoRossener – meow

+0

你可以展示你的模型? – zaidfazil

回答

2

您可以用annotate功能,像这样做,

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

输出会是这样,

<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'}]> 

无论他们工作的是Shift,计数都是特定月份中某个组的人数。

希望这就是你要找的,

+0

我也希望他们对Shift也有帮助。像白天在班上工作的木星一样。六月份的月份是50,七月份是60,八月份是40。你能帮我解决这个问题吗?! @zaidfazil – meow

+0

数据应该打印完全一样的方式我的JSON出现!火星和木星6月份。火星和木星7月份等 – meow

+0

你可以添加一个'order_by'子句,那里。 – zaidfazil