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)
我在
Python django
中比较新鲜,并且对Django Rest Framework
有点了解。我有一个像上面的模型,我想按月过滤日期字段,并按月获取不同的查询集.....是否有任何默认方法可以执行此操作...
提前致谢
最佳答案
您可以将TruncMonth与annotations一起使用
from django.db.models.functions import TruncMonth
MyModel.objects.annotate(
month=TruncMonth('date')
).filter(month=YOURVALUE).values('month').distinct()
或者,如果您只需要按月过滤日期(带不同的日期),则可以使用__month选项
MyModel.objects.filter(date__month=YOURVALUE).distinct()
旧的django
您可以使用extra,例如postgres
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()