【发布时间】:2015-02-04 17:06:58
【问题描述】:
我很想将 django queryset 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 对象的情况下,我仍然以 ':' 结束。我打算通过模板或视图中的 if else 脚本来解决这个问题,还是有更好的方法来解决这个问题?
【问题讨论】:
标签: python django filter django-queryset