在django中运行时更新相关模型的排序

时间:2017-05-10 13:19:12

标签: django runtime sql-order-by django-queryset

我不想在Meta中使用默认排序来应用永久排序。我宁愿在运行时更新它,而不是从模板访问它。是否有比以下更优雅的方式?

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

因为如果基础对象发生了变化,这将不会更新。

1 个答案:

答案 0 :(得分: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工具完成的所有工作,无需额外创建任何内容。