调用方法作为 ValuesQuerySet 的字段

Call a method as a field of ValuesQuerySet

我有一个模型和方法如下:

class Results(models.Model):
    t_id = models.TextField(blank=True)
    s_result_id = models.TextField(blank=True,primary_key=True)
    s_name = models.TextField(blank=True)
    s_score = models.FloatField(blank=True, null=True)
    ... (some other fields with huge data)
    def get_s_score(self):
        return 100 * self.s_score

在一个视图中,我试图从内部值调用 get_s_score 方法。我必须使用值来避免选择其他具有大量数据的字段。

    def all_recentsiteresults(request,t_id1):
Result = Results.objects.filter(t_id=t_id1).values('s_result_uid','s_name',get_s_score())

您不能在 values() 方法中使用模型的方法。但是你可以使用 only() 方法来减少内存使用:

Results.objects.only('s_result_id', 's_name', 's_score').filter(t_id=t_id1)