Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to filter a query using the max(date) value

I have this model:

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

I'm trying to create a queryset to find latest user who log_in for such specific logbook and status.

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

But latest_user is giving me a latest log_in format. I was thinking I can used latest_user.username but failed. Is there a way to find that username? Any guide is really appreciated.

like image 520
Charlesliam Avatar asked Oct 20 '25 19:10

Charlesliam


1 Answers

You can use latest() instead:

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

then you can access user through latest_log.user.

like image 111
dan-klasson Avatar answered Oct 22 '25 09:10

dan-klasson



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!