Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按泛型关系排序?_Python_Django_Django 1.7 - Fatal编程技术网

Python 按泛型关系排序?

Python 按泛型关系排序?,python,django,django-1.7,Python,Django,Django 1.7,我有两个模型发布和评论。这两个都可以通过一个额外的评级应用程序获得一分。该点与任何必要的对象和值具有通用关系 现在,我使用以下方法创建了一个Post和Comment对象列表: result_list = sorted(chain(post_list, comment_list),key=attrgetter('pub_date',)) 最大的问题是:我如何按指定的点排序,而不是按发布日期排序 我正在寻找一个解决方案,不修改帖子,评论或点,因为点是在一个额外的应用程序,我希望他们所有的工作相互独

我有两个模型发布和评论。这两个都可以通过一个额外的评级应用程序获得一分。该点与任何必要的对象和值具有通用关系

现在,我使用以下方法创建了一个Post和Comment对象列表:

result_list = sorted(chain(post_list, comment_list),key=attrgetter('pub_date',))
最大的问题是:我如何按指定的点排序,而不是按发布日期排序


我正在寻找一个解决方案,不修改帖子,评论或点,因为点是在一个额外的应用程序,我希望他们所有的工作相互独立。不过,还有第三个应用程序将它们结合在一起,所以我可以有一个新的视图来实现这一点。但我不知道怎么做

以下几点应该可以做到:

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
    )
 )

但是,我可以建议您对points应用程序进行升级和修改,a将使这一过程更加简单。

其他方面对此有着普遍的联系。没有一个解决方案符合我们不修改classIs的要求有没有办法从应用程序外部修改模型?类似于强制加入mixin或像使用模板一样覆盖它?有没有办法保持单个应用程序的独立性?请参阅Field中的contribute_to_class。我不确定我是否正确理解相关的查询名称。我想我必须将其添加到评论和帖子模型中,以获得正确的反向关系?但这会将他们的应用程序绑定到point应用程序,使其无法独立运行,对吗?相关的查询名称通常适用,而不仅仅是你的应用程序。它将为任何被给予分数的东西提供计算分数的方法。