我的模型中有一个自定义属性,我想 order_by 使用该属性:
class Report(models.Model):
title = models.CharField(max_length = 255)
pub_date = models.DateTimeField('date published', blank=True, null=True)
status = models.CharField(max_length = 2, choices=REPORT_STATUS)
@property
def risk_rating(self):
# Calculate risk rating here
return risk_rating
我想要做
reports = Report.objects.all().order_by('-risk_rating')
但当然它会返回一个关于不存在列的mysql错误。我不希望在使用 python 的排序算法中递归调用这个属性,但这是我认为我可以让它工作的唯一方法。
reports = sorted(Report.objects.all(), key=lambda t: t.risk_rating)
我能不能做得比这更好?