Django / Python无法解决的类型:complex()<复杂()Django教程youtube-croach

时间:2015-06-02 04:35:52

标签: python django

我从教程学习Django和Python,大多数时候不同版本的Django或Python之间存在错误。

我遇到了这个问题"无法解决的类型:complex()<络合物()"因为这个:

def top_stories(top=180, consider=1000):
    latest_stories = Story.objects.all().order_by('-created_at')[:consider]
    ranked_stories = sorted([(score(story), story) for story in latest_stories], reverse=True)
    return [story for score, story in ranked_stories][:top]

我找到了一个解决方案: 使用关键功能为商店提供分数:

ranked_stories = sorted(latest_stories, key=score, reverse=True)
return ranked_stories[:top]

这消除了您正在使用的decorate-sort-undecorate模式的需要,并且愉快地避免了在没有订购支持的情况下比较单个Story实例。

但是,它仍然给了我一个错误。这个新的解决方案不能与新的Django / Python版本相媲美吗?

1 个答案:

答案 0 :(得分:1)

是的,它已经改变了一点。现在,您必须为排序指定lambda,因为键必须是可调用的。 使用lambda使得它可以在您正在使用的可迭代对象的每个项目上进行调用 - 确保key可以在您自己的类的任何类型的对象实例中使用。

尝试以下方法:

ranked_stories = sorted(latest_stories, key=lambda story: store.score(), reverse=True)

您可以使用score对象将其设置为复杂,并且lambda

的美丽