我不想在Meta
中使用默认排序来应用永久排序。我宁愿在运行时更新它,而不是从模板访问它。是否有比以下更优雅的方式?
def get_object(self, queryset=None):
question = super().get_object(queryset)
question.choice_set.ordered = question.choice_set.order_by('-votes')
return question
因为如果基础对象发生了变化,这将不会更新。
答案 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工具完成的所有工作,无需额外创建任何内容。