Django按两个字段的总和排序不起作用

问题描述 投票:0回答:1

我试图通过回答问题/问题来命令我的用户

我有以下型号:

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')更改('-fieldsum')时,它仍会产生相同的结果。我也尝试过以下方法:

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

但即使使用这个,我总是得到相同的结果,用户仍然订购错误。

python django django-models pycharm
1个回答
0
投票

有时你需要为新生成的字段指定output_field,因为F()默认不支持它。您可以将它封装在ExpressionWrapper()中。试试这个。

users = User.objects.annotate(
    totalQs=ExpressionWrapper(
        F('answeredQuestions') / F('questions'), output_field=Integer())).order_by('totalQs')
© www.soinside.com 2019 - 2024. All rights reserved.