获取访问日志的最简单方法是每个用户只显示一个条目

时间:2014-07-01 21:52:01

标签: django django-models

以下是我的访问日志模型。如何仅显示每个用户的最新日志条目?

class AccessLog(models.Model):
    user = models.ForeignKey(User)
    datetime = models.DateTimeField(auto_now_add=True)
    summary = models.TextField()

    def __unicode__(self):
        return '%s %s %s' % (self.user.username, self.datetime, self.summary)

以下是一个示例日志:

tim 2014-07-01 21:36:24.646756+00:00 /admin/thatsmyninja/accesslog/
tim 2014-07-01 21:36:22.951165+00:00 /admin/
tim 2014-07-01 21:36:21.722480+00:00 /admin/jsi18n/
tim 2014-07-01 21:36:21.179028+00:00 /admin/auth/user/
tim 2014-07-01 21:34:27.830363+00:00 /
tim 2014-07-01 21:31:30.635038+00:00 /admin/
tim 2014-07-01 21:31:23.267388+00:00 /admin/jsi18n/
tim 2014-07-01 21:31:22.803494+00:00 /admin/thatsmyninja/accesslog/
tim 2014-07-01 21:31:19.826723+00:00 /admin/
tim 2014-07-01 21:30:54.112300+00:00 /
tim 2014-07-01 21:27:09.636657+00:00 /
DevinJohnCreighton 2014-07-01 21:17:17.923710+00:00 /
tim 2014-07-01 20:53:11.238587+00:00 /
tim 2014-07-01 20:40:54.467803+00:00 /
tim 2014-07-01 20:22:34.792798+00:00 /
tim 2014-07-01 20:21:53.756485+00:00 /admin/jsi18n/
tim 2014-07-01 20:21:53.319473+00:00 /admin/thatsmyninja/accesslog/
tim 2014-07-01 20:21:49.479022+00:00 /admin/
tim 2014-07-01 20:21:38.826550+00:00 /
tim 2014-07-01 20:21:37.827182+00:00 /
ZacharyPaulClark 2014-07-01 18:54:02.639890+00:00 /favicon.ico
ZacharyPaulClark 2014-07-01 18:53:50.673345+00:00 /
MarissaKayLaslie 2014-07-01 18:34:49.603106+00:00 /
MarissaKayLaslie 2014-07-01 18:34:48.533208+00:00 /vote/27/
TrevynStegall 2014-07-01 17:48:28.358071+00:00 /
TinaTaylor 2014-07-01 17:13:34.444923+00:00 /
TinaTaylor 2014-07-01 17:13:27.812130+00:00 /
JasmynMcClain 2014-07-01 16:52:50.634659+00:00 /
JasmynMcClain 2014-07-01 16:52:50.366377+00:00 /vote/6/
KaylaCook 2014-07-01 16:31:10.933767+00:00 /
ZacharyPaulClark 2014-07-01 16:29:40.226395+00:00 /
DevinJohnCreighton 2014-07-01 15:40:27.693849+00:00 /favicon.ico
DevinJohnCreighton 2014-07-01 15:40:27.514892+00:00 /favicon.ico
DevinJohnCreighton 2014-07-01 15:40:16.293675+00:00 /
DevinJohnCreighton 2014-07-01 15:40:16.125525+00:00 /comment/5/
DevinJohnCreighton 2014-07-01 15:39:23.342094+00:00 /
DevinJohnCreighton 2014-07-01 14:56:52.403421+00:00 /favicon.ico
DevinJohnCreighton 2014-07-01 14:56:52.256512+00:00 /favicon.ico
ErickaRuiz 2014-07-01 12:29:24.489086+00:00 /
ErickaRuiz 2014-07-01 12:29:24.425908+00:00 /vote/6/
tim 2014-07-01 10:33:04.390345+00:00 /admin/jsi18n/
tim 2014-07-01 10:33:04.007477+00:00 /admin/thatsmyninja/accesslog/
tim 2014-07-01 10:33:00.854148+00:00 /admin/
tim 2014-07-01 10:32:57.402208+00:00 /admin/jsi18n/
tim 2014-07-01 10:32:57.047817+00:00 /admin/auth/user/
tim 2014-07-01 10:32:52.467662+00:00 /admin/
tim 2014-07-01 10:32:39.508223+00:00 /
tim 2014-07-01 08:04:57.934517+00:00 /
tim 2014-07-01 08:03:13.289238+00:00 /
tim 2014-07-01 08:01:49.168416+00:00 /admin/jsi18n/
tim 2014-07-01 08:01:48.834723+00:00 /admin/thatsmyninja/accesslog/
tim 2014-07-01 08:01:46.158318+00:00 /admin/
tim 2014-07-01 08:01:35.244715+00:00 /admin/
tim 2014-07-01 08:01:31.884854+00:00 /admin/jsi18n/
tim 2014-07-01 08:01:31.346519+00:00 /admin/thatsmyninja/vote/
tim 2014-07-01 08:01:03.339832+00:00 /admin/
tim 2014-07-01 08:01:03.077148+00:00 /admin/
tim 2014-07-01 08:00:54.256807+00:00 /
tim 2014-07-01 07:59:56.191695+00:00 /

以下是我想要的回复:

tim 2014-07-01 21:36:24.646756+00:00 /admin/thatsmyninja/accesslog/
DevinJohnCreighton 2014-07-01 21:17:17.923710+00:00 /
ZacharyPaulClark 2014-07-01 18:54:02.639890+00:00 /favicon.ico
MarissaKayLaslie 2014-07-01 18:34:49.603106+00:00 /
TrevynStegall 2014-07-01 17:48:28.358071+00:00 /
TinaTaylor 2014-07-01 17:13:34.444923+00:00 /
JasmynMcClain 2014-07-01 16:52:50.634659+00:00 /
KaylaCook 2014-07-01 16:31:10.933767+00:00 /
ErickaRuiz 2014-07-01 12:29:24.489086+00:00 /

1 个答案:

答案 0 :(得分:1)

这些方面的内容如何

class User(models.Model):
    ...
    @property
    def lastest_log(self):

        return AccessLog.objects.filter(user=self).latest('datetime')

然后循环

users = User.objects.all()

for user in users:
    print user.latest_log