我有一个模型,它的“published”实例我希望是带有一个publish_date
的已经过去的实例。在
# settings.py
USE_TZ = True
TIME_ZONE = 'Europe/Athens'
# models.py
class Publishable(models.Model):
date_published = models.DateTimeField(
_('publish date'), blank=True, null=True)
objects = PublishableManager()
# managers.py
class PublishableQuerySet(models.QuerySet):
def published(self):
now = timezone.now()
return self.exclude(
Q(date_published__gt=now) | Q(date_published__isnull=True))
class PublishableManager(models.Manager):
def get_queryset(self):
return PublishableQuerySet(
self.model, using=self.db).prefetch_related()
def published(self):
return self.get_queryset().published()
所以我在数据库中有一个Publishable
实例,它的date_published
是过去的,当我试图获取“published”实例时应该获取它。然而,即使在实际比较它的date_published
和{
一些额外的信息:
date_published
大约50分钟或更长时间之前,将获取实例.pyc
文件时,会获取实例那么,如果通过了与当前时间的比较测试,为什么不获取实例呢?我错过了什么?在
编辑
以上是在一个开发环境中(使用SQLite
和django的dev服务器),但是“缺少发布的实例”也在生产环境中被发现(不幸的是,MySQL
)。在
我上面提到的.pyc
现象有点不正确。当我重新启动dev server时,该行为将得到纠正。在
我注意到的一件事,显然与此相关,那就是如果我试图在PublishableQuerySet.published()
中print
,那么大多数时候它都不会被调用(即没有print
发生),所以基本上。。。与timezone.now()
的比较似乎没有发生。在
目前没有回答
相关问题 更多 >
编程相关推荐