我有Topiccenter模型:
class TopicCenter(models.Model):
title = models.TextField()
def latest_entry(self):
latest_entries = []
book = self.tc_books.order_by('-id')[:1]
journal = self.tc_journals.order_by('-id')[:1]
if book:
for b in book:
if b:
latest_entries.append(b)
if journal:
for jn in journal:
if jn:
latest_entries.append(jn)
lastone = []
if latest_entry:
lastone = max(latest_entries, key = lambda x: x.added)
return lastone
# what to return here if lastone is empty list ?? :(
每个主题中心可以有许多书籍和期刊。我想通过added
字段获取最新条目。你知道吗
我现在正在按最新条目的日期对主题中心进行排序。现在我面临的问题是,一些主题中心完全是空的(没有书,没有期刊),所以我不知道如果latest_entry
是[]
的话,在latest_entry()
方法中返回什么,所以我可以这样使用它:
tcss = TopicCenter.objects.all().distinct('id')
sorter = lambda x: x.latest_entry().added
tcs = sorted(tcss, key=sorter, reverse=True)
此时我得到了'list' object has no attribute 'added'
,因为一个主题中心既没有书也没有期刊,所以latest_entry()
返回[]
,这导致了错误消息。你知道吗
有人能帮我解决这个逻辑吗
你可以试着改变你的条件
或者您可以查看
lastone
列表是否为空,您可以在其中附加任何消息,如我假设您也在其他地方使用
latest_entry()
,所以只需创建另一个方法latest_added_time()
,它返回latest_entry.added
或假时间。你知道吗然后,您可以使用这种新方法进行排序:
如果您没有将
latest_entry()
用于其他任何东西,那么您应该将此逻辑直接放入该函数中。你知道吗相关问题 更多 >
编程相关推荐