2016-06-12 5 views
0

У меня есть эта модель:Сортировка QuerySet на основе более двух различных полей

class ScoringModel(model.Model): 
    red_score = models.SmallIntegerField() 
    blue_score = models.SmallIntegerField() 

Я пытаюсь отсортировать набор запросов на основе зависимости от того, больше между ними. Теперь, взяв их сумму, это не сработает, потому что это означает, что оценка от 90 до 0 будет иметь более низкий ранг, чем 50 - 50 баллов, чего я не хочу. (Я пытаюсь найти список высокой оценки, в основном.)

Я пытался добавить функцию внутри этой модели, как таковой:

class ScoringModel(model.Model): 
    red_score = models.SmallIntegerField() 
    blue_score = models.SmallIntegerField() 

    def max_score(self): 
     return self.red_score if self.red_score > self.blue_score else self.blue_score 

Который не работает, так как функция order_by не поддерживает возвращаемые значения функции (т.е. ScoringModel.objects.order_by('-max_score') и ScoringModel.objects.order_by('-max_score()') не работают).

Любая помощь будет очень ценится

ответ

1

я могу предложить вам, чтобы увидеть этот ответ

https://stackoverflow.com/a/1875616/5518973

вы можете использовать функцию MySQL НАИБОЛЬШИЙ (field1, field2) вместо суммы и затем порядок тем, что дополнительное поле.

+1

спасибо. Это сработало. – Justin

Смежные вопросы