【发布时间】:2015-01-27 12:43:46
【问题描述】:
我有一个模型管理器,用于过滤查询集并返回今天开始的 Records 对象,即:time_start.day == datetime.now().day。我不能在模型管理器上使用 .count() 或过滤器:
我得到错误
>>>> Records.objects.today().count()
TypeError: count() takes exactly one argument (0 given)
>>>> Records.objects.today().filter(owner=self.request.user)
AttributeError 'list' object has no attribute 'filter'
我应该返回什么?不知道我怎样才能得到这个工作。这是经理:
class RecordManager(models.Manager):
use_for_related_fields = True
def today(self, **kwargs):
today = datetime.now(pytz.utc)
yesterday = today - timedelta(days=1)
initial_queryset = self.filter(time_start__gte=yesterday, **kwargs)
return_list = []
for record in initial_queryset:
if (record.time_start).day == today.day:
return_list.append(record)
return return_list
这是模型:
class Records(models.Model):
owner = models.ForeignKey(User, null=True)
activity = models.ForeignKey(Activity, null=True)
time_start = models.DateTimeField(null=True)
time_end = models.DateTimeField(null=True)
objects = RecordManager()
def is_running(self):
if self.time_end is None:
return True
else:
return False
def total_time(self):
return ((self.time_end-self.time_start).seconds)/60
def string_time_start(self):
if self.time_start:
return self.time_start.strftime("%H:%M %P")
else:
return None
def string_time_end(self):
if self.time_end:
return self.time_end.strftime("%H:%M %P")
else:
return None
def __unicode__(self):
return "%s - %s" % (self.activity.title, self.string_time_start())
非常感谢您的帮助。
【问题讨论】:
-
试试 Records.objects.count()
-
工作正常。
-
我很高兴听到这个消息 :)
标签: django django-models django-queryset