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()
