3

私はこのモデルを持っています:

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')

そのような特定のログブックとステータスにログインした最新のユーザーを見つけるためのクエリセットを作成しようとしています。

view.py

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たけど失敗。そのユーザー名を見つける方法はありますか? どのガイドも本当に感謝しています。

4

2 に答える 2

8

代わりに使用できますlatest()

latest_log = LogBook_audit.objects.filter(logbook_id=pk, status=undo_rec.status).latest('log_in')

を介してユーザーにアクセスできますlatest_log.user

于 2013-08-08T09:00:44.607 に答える
1

クエリセットの結果を取得したいので、次を使用する必要がありますannotate()

latest_user = (LogBook_audit.objects
               .filter(logbook_id=pk, status=undo_rec.status)
               .annotate(max_log_in=Max('log_in')))

それが役に立てば幸い。

于 2013-08-08T09:00:24.433 に答える