lambda“QuerySet”对象没有属性“xxx”

2024-05-23 20:38:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我过滤了多个模型,并将它们链接在一起,并根据它们的属性对它们进行排序。在

bs = Book.objects.filter(books__person=person).order_by('-release_date') 
jn = Journal.objects.filter(journals__person=person).order_by('-year') 

joined = itertools.chain(x for x in (bs, jn))
sorter = lambda x: x.release_date if hasattr(x,'release_date') else x.year
sorted_medien = sorted(joined, key = sorter, reverse=True)

但它的意思是:'QuerySet' object has no attribute 'year'。这是合理的,因为我传递的是查询集而不是对象到排序器函数。在

我怎样才能更深入地将分类器应用到每个对象?在


Tags: 对象datereleasebybsobjects排序order
1条回答
网友
1楼 · 发布于 2024-05-23 20:38:52

你在做类似的事情:

>>> bs, jn = [1, 2], [3, 4]
>>> list(itertools.chain(x for x in [bs, jn]))
[[1, 2], [3, 4]]

你要做的是:

^{pr2}$

因此,您需要更改joined = itertools.chain ...行,如下所示:

joined = itertools.chain(bs, jn)

相关问题 更多 >