我试图通过回答问题/问题来命令我的用户
我有以下型号:
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')
但即使使用这个,我总是得到相同的结果,用户仍然订购错误。
有时你需要为新生成的字段指定output_field
,因为F()
默认不支持它。您可以将它封装在ExpressionWrapper()
中。试试这个。
users = User.objects.annotate(
totalQs=ExpressionWrapper(
F('answeredQuestions') / F('questions'), output_field=Integer())).order_by('totalQs')