我有两个模型Post和Comment。两者都可以通过额外的评级应用程序获得一个点。 Point与任何必要的对象和值具有通用关系。
现在我使用以下方法创建了一个Post和Comment对象列表:
result_list = sorted(chain(post_list, comment_list),key=attrgetter('pub_date',))
最大的问题是:如何按指定的点而不是pub_date进行排序?
我正在寻找一个不修改Post,Comment或Point的解决方案,因为Point是一个额外的应用程序,我希望所有这些解决方案彼此独立工作。虽然有第三个应用程序组合它们,所以我可以有一个新的视图来完成这个伎俩。但我不知道该怎么做。
答案 0 :(得分:0)
下面的内容应该可以解决问题:
result_list = sorted(
chain(post_list, comment_list),
key=lambda x: sum(
[
point.value for point in Point.objects.filter(
point_for_id=x.id,
point_for_class=ContentType.objects.get_for_model(x)
],
0
)
)
但是我可以建议您编写和修改积分应用,related_query_name
会使这更加简单。