【问题标题】:Order Django objects randomly随机排序 Django 对象
【发布时间】:2010-02-08 21:15:32
【问题描述】:

这是一个有趣的问题,我有一个按评分顺序列出的用户列表,如果两个用户的评分相同,我有一个随机数,用于确保列表不会总是一样。

目前我通过执行查询来做到这一点:

 选择 app_model1.column1、app_model1.colum2、app_model2.column3
   从 app_model1 左加入 app_model2
   按colum1排序,random();

但是当我将一个大型 Django 应用程序重构为几个较小的应用程序时,这让我感到震惊,我将表的名称硬编码到这个 SQL 中(并且它破坏了我的单元测试),我真的应该使用本机 ORM 来实现这一目标。

如何获得相同的结果,但使用 Django 的 django.contrib.auth.User 和 Profile 模型?

【问题讨论】:

    标签: django django-models django-orm


    【解决方案1】:

    根据the documentation,您可以使用特殊的“?”字段名称:

        class Meta:
            ordering = ('colum1', '?')
    

    【讨论】:

    • 我可以,但是查询选择了一个用户列表,但按 Profile 模型中的值对它们进行排序,该示例中的排序仅适用于您应用 Meta 类的对象。我得试试看,我猜……看这个空间。
    • 你可以使用'?'您在 Django 中订购的任何地方。 Entry.objects.order_by('?')
    猜你喜欢
    • 2021-07-10
    • 2014-05-14
    • 2021-08-22
    • 2012-12-04
    • 2021-10-23
    • 1970-01-01
    • 2012-11-19
    • 2012-03-16
    • 2012-01-05
    相关资源
    最近更新 更多