我有一个模特:
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
。我想知道最近进入这个图书馆的最后一个媒体(无论是书籍,期刊还是报纸)。
我该怎么做?我正在考虑如何做到这一点,所以我没有尝试任何东西..请帮助
答案 0 :(得分:1)
一种方法是使用latest()查找最新的book
,journal
和newspaper
,然后按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
异常 - 您可能想要处理它。
希望有所帮助。