Django ORM 过滤上月 15 日到当月 15 日之间的记录
Django ORM filter records between last month 15th date to current month 15th date
我想过滤从上月15号到当月15号的queryset记录
有人知道怎么做吗?
Models.py
class Book(models.Model):
name = models.CharField(max_length=100, null=True)
author = models.CharField(max_length=100, null=True)
created_on = models.DateTimeField(auto_now_add=True)
Views.py
class BookView(View):
def get(self, *args, **kwags):
start_date = '15th_of_previous_month'
end_date = '15th_of_current_month'
qs = Book.objects.filter(created_on__gte=start_date,created_on__lt=end_date)
...
您可以通过以下方式获取当月的 15 号:
from django.utils.timezone import now
this_month_15 = now().date().replace(day=15)
上个月减去15天就可以算出来,然后再次把day
参数换成15
:
from datetime import timedelta
prev_month_15 = (this_month_15 - timedelta(days=15)).replace(day=15)
This is how I try to solve it:
import datetime
today = datetime.date.today()
first = today.replace(day=1) # first date of current month
previous_month_date = first - datetime.timedelta(days=1) # this will be the last day of previous month
start_date = datetime.datetime.strptime(str(previous_month_date.year) + '-' + str(previous_month_date.month) + '-15', '%Y-%m-%d')
end_date = first + datetime.timedelta(days=15)
qs = Book.objects.filter(created_on__gte=start_date,created_on__lt=end_date)
我想过滤从上月15号到当月15号的queryset记录
有人知道怎么做吗?
Models.py
class Book(models.Model):
name = models.CharField(max_length=100, null=True)
author = models.CharField(max_length=100, null=True)
created_on = models.DateTimeField(auto_now_add=True)
Views.py
class BookView(View):
def get(self, *args, **kwags):
start_date = '15th_of_previous_month'
end_date = '15th_of_current_month'
qs = Book.objects.filter(created_on__gte=start_date,created_on__lt=end_date)
...
您可以通过以下方式获取当月的 15 号:
from django.utils.timezone import now
this_month_15 = now().date().replace(day=15)
上个月减去15天就可以算出来,然后再次把day
参数换成15
:
from datetime import timedelta
prev_month_15 = (this_month_15 - timedelta(days=15)).replace(day=15)
This is how I try to solve it:
import datetime
today = datetime.date.today()
first = today.replace(day=1) # first date of current month
previous_month_date = first - datetime.timedelta(days=1) # this will be the last day of previous month
start_date = datetime.datetime.strptime(str(previous_month_date.year) + '-' + str(previous_month_date.month) + '-15', '%Y-%m-%d')
end_date = first + datetime.timedelta(days=15)
qs = Book.objects.filter(created_on__gte=start_date,created_on__lt=end_date)