2017-05-10 72 views
0

我不想使用Meta中的默認排序進行永久排序。我寧願在運行時更新它,而不是從模板中訪問它。有沒有比以下更優雅的方式?在django運行時更新相關模型的排序

def get_object(self, queryset=None): 
    question = super().get_object(queryset) 
    question.choice_set.ordered = question.choice_set.order_by('-votes') 
    return question 

因爲如果底層對象發生變化,這不會更新。

+0

你可以在你正在查詢的函數中進行排序。 – badiya

+0

您能否提供您的模型的一個最低限度的例子?請更好地解釋「在運行時更新它」是什麼意思。 – cezar

回答

0

爲什麼不使用QuerySet的order_by方法?

假設你有一個潛行Question,其中有一些相關的模型,我們稱之爲Answer

class Answer(models.Model): 
    content = models.CharField() 
    votes = models.IntegerField() 

class Question(models.Model): 
    content = models.CharField() 
    answer = models.ForeignKey(Answer, related_name="questions") 

然後你可以命令你的檢索結果如下:

q = Question.objects.order_by('-answer__votes') 

這是完成這一切使用Django工具,不需要額外創建任何東西。

+0

對不起,問題不清楚。我更新了它。 – R3turnz