2017-07-24 57 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