我正在尝试最有可能预测的数据点类别。由于代码是最好的解释:
楷模:
class DataPoint(models.Model):
#... unimportant fields
class PredResult(models.Model):
likelihood = models.FloatField()
value = models.IntegerField()
data_point = models.ForeignKey(DataPoint)
对于每个 DataPoint 对象,我试图value
为 PredResult 找到可能性最高的对象。目前我正在使用for循环:
data_points = DataPoints.objects.select_related('predresult')
for dp in data_points:
if dp.predresult_set.all().exists():
val = dp.predresult_set.order_by('-likelihood')[0].value
#do other stuff here with val and dp
我想best_value
在查询集中添加一个字段DataPoint
。目前每个 DataPoint 大约有 5 个 PredResult 对象和大约 20,000 个 DataPoint(尽管这可能会迅速膨胀)。但是,这个 for 循环需要很长时间才能在视图中完成。
任何人都可以建议一种方法来处理这个问题吗?要么是 Django ORM 技巧,要么extra()
是Queryset
. 还是您认为我应该在对象上使用post-save
方法PredResult
并直接更新对象上的字段DataPoint
?
如果需要,我将使用 MySQL 作为数据库后端。