我需要帮助来获取 django 查询,其中我的 json 文件应该将此数据作为输出。我尝试了很多方法,但我得到的只是一些碎片,而不是完全。我是 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"
}];
我可能尝试在 view.py 中获取火星和木星的计数,如下所示,其中 json 为 [{'Group':'Mars','count':10},{'Group': 'Jupiter','count':50}]
现在添加了月份,这是我没有得到的,而“月份”位于 charfield 中。
View .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)
最佳答案
您可以使用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'}]>
计数是特定月份某个群组中的人数,无论其工作的类次
如何。
希望,这就是您正在寻找的,
关于python - 无法在 django 中找出正确的 json 查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45279117/