如何获得多个模型中的最新条目 - django python

时间:2014-04-12 22:17:58

标签: python django

我有一个模特:

class Library(models.Model):
  name = models.TextField()

class Book(models.Model):
  name = models.TextField()
  lib = models.ForeignKey(Library,related_name="lib_books")
  added = models.DateTimeField(auto_now_add=True, blank=True)

class Journal(models.Model):
  name = models.TextField()
  lib = models.ForeignKey(Library,related_name="lib_journals")
  added = models.DateTimeField(auto_now_add=True, blank=True)

class Newspaper(models.Model):
  name = models.TextField()
  lib = models.ForeignKey(Library,related_name="lib_newspapers")
  added = models.DateTimeField(auto_now_add=True, blank=True)

我在图书馆BIG LIBRARY。我想知道最近进入这个图书馆的最后一个媒体(无论是书籍,期刊还是报纸)。

我该怎么做?我正在考虑如何做到这一点,所以我没有尝试任何东西..请帮助

1 个答案:

答案 0 :(得分:1)

一种方法是使用latest()查找最新的bookjournalnewspaper,然后按added日期查找它们之间的最大值:< / p>

from operator import attrgetter

book = Book.objects.latest('added')
journal = Journal.objects.latest('added')
newspaper = Newspaper.objects.latest('added')

print max((book, journal, newspaper), key=attrgetter('added'))

请注意,如果latest()找不到记录,则会抛出DoesNotExist异常 - 您可能想要处理它。

希望有所帮助。