Skip to main content
 首页 » 编程设计

python之在 Django ORM 中获取月份分组

2024年10月01日39hnrainll

截至目前,我已尝试使用

提取月份详细信息
total_dict = MyModel.objects.values('Gender', 'DOJ').annotate(count=Count('Gender')).order_by('DOJ', 'Months') 
for d in total_dict: 
    d['DOJ'] = str(d['DOJ'].month) 
print total_dict 

输出是:

[{'DOJ': '1', 'Gender': u'Male', 'value': 1}, {'DOJ': '1', 'Gender': u'Male', 'value': 1}, {'DOJ': '1', 'Gender': u'Female', 'value': 1}]  

我想要的是将具有相同性别的条目的值加在一起,例如而不是 {'DOJ': '1', 'Gender': u'Male', 'value': 1}, {'DOJ': '1', 'Gender': u'Male', 'value ': 1} 应该有一个条目 {'DOJ': '1', 'Gender': u'Male', 'value': 2}

我的model.py是

class MyModel(models.Model): 
user = models.OneToOneField(User, on_delete=models.CASCADE) 
Dept=models.CharField(max_length=200,blank=True, null=True, default=None) 
Gender =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) 
DOJ=models.DateField(null=True) 

实际上不需要月份字段!

我怎样才能做到这一点?

请您参考如下方法:

total_dict = MyModel.objects.annotate(month=TruncMonth('DOJ')).values('Gender', 'month').annotate(sum=Count('Gender')) 

试试这个。