Python Django从日期字段中按月获取不同的查询集
我是Python Django从日期字段中按月获取不同的查询集,python,django,django-rest-framework,Python,Django,Django Rest Framework,我是pythondjango方面的新手,对django Rest框架有一点了解 我有一个像上面这样的模型,我想按月份过滤日期字段,并按月份获得不同的queryset…..是否有任何默认方法可以做到这一点 提前谢谢这可能会对您有所帮助 MyModel.object.values('col1','col2',…,'date')。distinct('date') 或者试试这个: class MyModel(models.Model): TRANSACTION_TYPE_CHOICES = (
pythondjango
方面的新手,对django Rest框架有一点了解
我有一个像上面这样的模型,我想按月份过滤日期字段,并按月份获得不同的queryset…..是否有任何默认方法可以做到这一点
提前谢谢这可能会对您有所帮助
MyModel.object.values('col1','col2',…,'date')。distinct('date')
或者试试这个:
class MyModel(models.Model):
TRANSACTION_TYPE_CHOICES = (
('p', 'P'),
('c', 'C'),
)
status = models.CharField(max_length=50, choices=TRANSACTION_TYPE_CHOICES, default='c')
user = models.ForeignKey(User, db_index=True, on_delete=models.CASCADE,related_name='user_wallet')
date = models.DateField(auto_now=True)
amount = models.FloatField(null=True, blank=True)
def __unicode__(self):
return str(self.id)
你可以用
或者,如果您只需要使用distinct按月筛选日期,则可以使用该选项
较老的django
您可以使用,例如postgres
MyModel.objects.filter(date__month=YOURVALUE).distinct()
我想在一个月内将queryset与DateField区分开请检查更新答案,这可能无法测试@Piyuss.Wanare很好的复制)您需要添加导入Count
并在对象之后更改换行符
,我不认为从django.db.models.functions导入TruncMonth导入错误:无法导入名称TruncMonth您使用的django版本是什么?我正在使用django 1.9.12其他时间,如果您使用的不是最新版本将版本和数据库添加到问题中会很好,如果您现在编辑您的问题会很好,请检查最后一个解决方案,谢谢。该解决方案对您有帮助吗?如果是的话,你应该申请,其他人也会申请。
from django.db.models.functions import TruncMonth
MyModel.objects.annotate(
month=TruncMonth('date')
).filter(month=YOURVALUE).values('month').distinct()
MyModel.objects.filter(date__month=YOURVALUE).distinct()
MyModel.objects.extra(
select={'month': "EXTRACT(month FROM date)"},
where=["EXTRACT(month FROM date)=%s"],
params=[5]
# CHANGE 5 on you value
).values('month').distinct()