2010-02-08 114 views
0

下面是一個有趣的問題,我列出了按評級順序列出的用戶列表,以及兩個用戶具有相同評分的用戶列表,我使用了一個隨機數字來確保列表贏得' t總是一樣的。訂購Django隨機對象

目前我做這通過執行查詢:

 select app_model1.column1, app_model1.colum2, app_model2.column3 
    from app_model1 left join app_model2 
    order by colum1, random();

不過,雖然重構大Django應用程序分割成幾個較小,我會硬編碼表的名稱到這個SQL忽然想起,(它打破了我的單元測試),我真的應該使用本地ORM來實現這一點。

如何獲得相同的結果,但是使用Django的django.contrib.auth.User和Profile模型呢?

回答

3

根據the documentation你可以使用一個特殊的「?」字段名稱:

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

我可以,但查詢挑選出用戶的名單,而是由剖面模型的數值訂單他們,在這個例子中排序僅適用於您申請的元類對象。我必須嘗試一下,看看我猜...看這個空間。 –

+0

您可以使用'?'您在Django訂購的任何地方。 'Entry.objects.order_by('?')' –