gpt4 book ai didi

python - 用日期排序查询集

转载 作者:太空宇宙 更新时间:2023-11-04 05:39:48 26 4
gpt4 key购买 nike

从问题 here 延伸,其中使用用户输入过滤查询集,我想知道是否可以根据当前月份和星期过滤查询集。例如,每个月应从 1 日开始,每周应从星期一开始,查询集应针对当前月份和本周发生的所有测试进行过滤。

models.py

class City(models.Model):
city_name=models.CharField(max_length=100,default='',blank=False)

class Person(models.Model):
title = models.CharField(max_length=3,default="mr",blank=False)
name = models.CharField(max_length=50,default='',blank=False)
address = models.CharField(max_length=200,default='',blank=False)
city = models.ForeignKey(City)

class Test(models.Model):
person = models.ForeignKey(Person)
date = models.DateTimeField(auto_now_add=True)
test_name = models.CharField(max_length=200,default='',blank=False)
subject = models.CharField(max_length=100,default='')

views.py

def personlist(request, id):
data = requests.get('http://127.0.0.1:8000/app/cities/' + id + '/persons/').json()
context = RequestContext(request, {
'persons': data['results'],'count': data['count'],
})

return render_to_response('template.html', context)

以及相关的json

根据 this问题 - 一种方法是使用

startdate = date.today()
enddate = startdate + timedelta(days=6)
Sample.objects.filter(date__range=[startdate, enddate])

但是 date.today() 不会每天都在变化,因此每天都会开始新的一周,从而产生一个新的查询集吗?与月份类似。有没有办法让查询集按当前周和月份过滤。每个分别从每个星期一和每个 1 开始?

最佳答案

您可以使用 __month__year查找以将查询集限制为本月的对象。

from datetime import date
today = date.today()
this_month_qs = Sample.objects.filter(
date__month=today.month,
date_year=today.year,
)

要查找本周对象,您首先需要找到本周一的日期。为此,您可以使用日期的 weekday() 方法找到今天的星期几(星期一 = 0,星期日 = 6),然后从今天减去那么多天。通过添加 6 天可以很容易地计算出一周的最后一天,然后您可以使用 __range 来查找本周的对象。

from datetime import date, timedelta
today = date.today()
# Use today.isoweekday() if you want the week
# to start on Sunday instead of Monday
first_day_of_week = date.today() - timedelta(today.weekday())
end_date = first_day_of_week + timedelta(days=6)
this_week_qs = Sample.objects.filter(date__range=[startdate, enddate])

关于python - 用日期排序查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34323843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com