gpt4 book ai didi

python - django 查询集过滤器日期时间字段

转载 作者:行者123 更新时间:2023-11-28 16:35:07 24 4
gpt4 key购买 nike

我正在努力将 django 查询集 API 引用与基于 DateTimeField 的过滤器一起使用。

我在 models.py 中准备了以下模型:

class KleedkamerIndeling(models.Model):

gametimedate = models.DateTimeField(auto_now=False, auto_now_add=False) # date and time of game
hometeam = models.CharField(max_length=25, blank=True) # name of home playing team team
homedressroom = models.CharField(max_length=25, blank=True) # dressing room of home playing team
awayteam = models.CharField(max_length=25, blank=True) # name of visiting team team
awaydressroom = models.CharField(max_length=25, blank=True) # dressing room of visiting team team
pitch = models.CharField(max_length=25, blank=True) # name / number of playing pitch
referee = models.CharField(max_length=25, blank=True) # name of referee
refdressroom = models.CharField(max_length=25, blank=True) # name/number of referee dressroom
timestamp = models.DateField(auto_now_add=True, auto_now=False)
indelings_datum = models.DateField() # need to change to datum added later

def __unicode__(self):
return smart_unicode(self.hometeam)

我想根据当前日期访问数据库。应该是这样的:

queryset = KleedkamerIndeling.objects.all().filter(gametimedate=date.today())

这在我使用“日期字段”之前是有效的,但我决定使用日期时间字段,因为我还需要所玩游戏的开始时间。

我搜索了网络和 stackoverflow,发现了以下较旧的主题,How can I filter a date of a DateTimeField in Django?但我在执行上遇到了困难。

我想创建一个查询集,以获取今天日期可用的所有“KleedkamerIndeling”。随后我想检查列表中是否有超过 10 个对象。如果是这样的话,我想根据当前时间进一步缩小范围,也可以通过日期时间字段上的过滤器。最后,我想对对象列表进行排序,以便按时排序。

我知道我的问题必须解决 datetimefield van 的特性 我感谢几行代码来帮助我前进。我整个下午都在尝试在 python manage.py shell 中找到正确的查询....

我的模型最有效,因为 queryset = KleedkamerIndeling.objects.all() 似乎有效,而且我能够为查询集列表中名为“game0 到 game10”的每个对象设置单独的列表。

我还有一个关于日期时间字段格式的问题:

我定义了一个“KleedkamerIndeling”,它描述了一场在 13:00 开始的比赛。我使用查询集列表中的对象定义了 10 个不同的“游戏”对象。即 game0 = [queryset[0].hometeam 等...如果适用的话 game10。游戏时间字段通过过滤器显示在模板中,例如:{{game0.0|date:"H"}}:{{game0.0|date:"i"}}。在没有 game0 对象的情况下,我仍然以 ':' 结尾。我计划通过模板或 View 中的 if else 脚本来解决这个问题,或者是否有更好的方法来解决这个问题?

最佳答案

由于您正在使用日期时间字段,因此您希望使用日期时间对象进行查询。所以首先将查询集从最早到最新排序,然后过滤掉今天没有发生的事件。

from datetime import datetime, timedelta, time

today = datetime.now().date()
tomorrow = today + timedelta(1)
today_start = datetime.combine(today, time())
today_end = datetime.combine(tomorrow, time())

queryset = KleedkamerIndeling.objects.order_by('-gametimedate').filter(gametimedate__gte=today_start).filter(gametimedate__lt=today_end)

之后我们可以检查是否有超过 10 个对象,按当前时间过滤,并将查询集限制为 10 个对象。

if queryset.count() > 10:
queryset = KleedkamerIndeling.objects.filter(gametimedate__gte=datetime.now())[:10]

关于python - django 查询集过滤器日期时间字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27334355/

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