我有这个型号:
class LogBook_audit(models.Model):
id = models.AutoField(primary_key=True)
logbook = models.ForeignKey(LogBook, verbose_name='Logbook Control No.')
username = models.ForeignKey(User, null=True, blank=True, verbose_name='Username')
status = models.CharField(null=False, blank=False, max_length=40, choices=STATUS_TYPE, default=u'CHECKING REQUIREMENTS', verbose_name='Status')
log_in = models.DateTimeField(default=lambda:datetime.now(), verbose_name='Work start')
我正在尝试创建一个查询集来查找log_in以获取此类特定日志和状态的最新用户。
undolink(request, pk):
undo_rec = LogBook.objects.get(pk=pk)
latest_user = LogBook_audit.objects.filter(logbook_id=pk, status=undo_rec.status).aggregate(Max('log_in'))
...
但是latest_user给了我一个最新的log_in格式。我以为我可以使用latest_user.username
但失败了。有没有办法找到该用户名?任何指南都非常感谢。
答案 0 :(得分:6)
您可以改为使用latest()
:
latest_log = LogBook_audit.objects.filter(logbook_id=pk, status=undo_rec.status).latest('log_in')
然后您可以通过latest_log.user
访问用户。
答案 1 :(得分:1)
您希望获得查询集结果,因此您应该使用annotate()
:
latest_user = (LogBook_audit.objects
.filter(logbook_id=pk, status=undo_rec.status)
.annotate(max_log_in=Max('log_in')))
希望它有所帮助。