我正在努力使用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())
之前我用 'datefield' 可以运行,但因为需要游戏开始的时间,所以决定转换成 datetimefield。
我在网上和stackoverflow上搜到了一个旧话题,如何在Django中过滤DateTimeField的日期? 但是我遇到了一些实现上的问题。
我想创建一个查询集,获取今天日期所有可用的 'KleedkamerIndeling',然后检查列表中是否有超过10个对象。如果是这样,我还想进一步根据当前时间缩小范围,也通过对datetimefield进行筛选。最后,我想对对象列表进行排序,使其按时间排序。
我知道我的问题与datetimefield的特性有关,希望能给我几行代码来帮助我前进。我一下午都在试图在 python manage.py shell 中找到正确的查询语句...
我的模型肯定没有问题,因为 queryset = KleedkamerIndeling.objects.all() 看起来正常,并且我能够为每个对象设置单独的列表,称为“game0 through game10 from the queryset list”。
我在 datetimefield 格式上还有一个问题:
我定义了一个描述从13:00开始的游戏的 'KleedkamerIndeling'。我使用查询集列表中的对象定义了10个不同的 'game' 对象,即 game0 = [queryset[0].hometeam 等... 如适用则为 game10。游戏时间字段通过模板过滤器显示,例如: {{game0.0|date:"H"}}:{{game0.0|date:"i"}}。但是在没有game0对象的情况下,我仍然会得到 ':'。我计划通过模板或视图中的if else脚本来解决此问题,还是有更好的方法可以解决这个问题吗?