我有一个方法模型。
class Book(models.Model):
title = models.TextField()
class Review(models.Model):
content = models.TextField()
book = models.ForeignKey(Book,related_name="book_reviews")
def lastreview(self):
return self.objects.order_by('-id')[:1]
但是一旦我在模板中使用这个方法
{{book.book_reviews.lastreview.content}}
它没有显示任何内容..
我在这里失踪了什么?
答案 0 :(得分:3)
我相信你正试图找回一本书的最新评论(你的问题并不清楚)。 book
可以访问book.book_reviews
的相关评论。它是一个QuerySet而不是一个Review
对象,因此{{ book.book_reviews.lastreview }}
将失败。
我建议直接在lastreview
下移动Book
方法,例如:
class Book(models.Model):
title = models.TextField()
def lastreview(self):
try:
return self.book_reviews.order_by('-id')[0]
except IndexError:
return None
现在,您可以通过
访问模板中图书的最新评论{{ book.lastreview.content }}
注意:我建议将DateTimeField
添加到Review
,因为根据id
查找最新评论可能会产生误导。例如,某人可以编辑旧评论,但不会显示为最新评论。