Упорядочение по Джанго по сумме двух полей не работает - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь заказать своих пользователей по ответамВопрос / вопросы

У меня есть следующая модель:

class User(models.Model):
    firstname = models.CharField(max_length=100)
    lastname = models.CharField(max_length=100)
    username = models.CharField(max_length=100)
    questions = models.IntegerField(null=True)
    answeredQuestions = models.IntegerField(null=True)

И я пытаюсь сделать следующее:

users = User.objects.extra(
        select={'fieldsum': 'answeredQuestions / questions'},
        order_by=('-fieldsum',)

Тем не менее, при замене (-fieldsum) на just ('fieldsum'), он все равно дает тот же результат.Я также попробовал следующее:

users = User.objects.annotate(total=F('answeredQuestions') / F('questions')).order_by('total')

Но даже используя это, я всегда получаю один и тот же результат, и пользователи остаются в неправильном порядке.

1 Ответ

0 голосов
/ 07 апреля 2019

Иногда вам нужно указать output_field для вновь созданного поля, потому что F() не поддерживает его по умолчанию. Вы можете сделать это, заключив его в ExpressionWrapper(). Попробуй это.

users = User.objects.annotate(
    totalQs=ExpressionWrapper(
        F('answeredQuestions') / F('questions'), output_field=Integer())).order_by('totalQs')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...