django - 使用两个外键查找max,并使用__in

时间:2017-03-30 09:03:48

标签: python django database web django-queryset

我是Django和Python的新手,我遇到了问题。这是我的模特:

class Similarity(models.Model):
    score = models.FloatField(max_length=10) 
    mother_fk = models.ForeignKey('MotherCompound', on_delete=models.CASCADE)
    father_fk= models.ForeignKey('FatherCompound',on_delete=models.CASCADE)

使用此视图(仅限重要部分):

mothers =XXXXX_set.all() #queryset of mothers
fathers =XXXXX_set.all() #queryset of fathers

couple= Similarity.objects.filter(mother_fk__in=mothers,father_fk__in=fathers)

最后,我会有一个这种形状的表,这两个外键之间有不同的组合。

  • M1 / F1 = 1.0
  • M1 / F2 = 0.9
  • M2 / F1 = 0.6
  • M3 / F1 = 0.5
  • M2 / F3 = 0.3
  • M3 / F2 = 0.1

我希望依赖min(len(mothers),len(fathers))(让我们说“3”)来获得这对过滤器的三对母亲/父亲:

  

你寻找母亲和父亲参与的最佳分数   英寸

我的意思是,母亲和父亲可以参与不同的组合,但我想根据最佳分数只显示一个例子。

在此示例中,最终输出应为:

  • M1 / F1 = 1.0
  • M2 / F3 = 0.3
  • M3 / F2 = 0.1

我的问题是,是否有可能在一行中,在查询中,或者如果在查询行之后,我必须做一个循环并尝试找到每个母亲和父亲的最大值。在这两种情况下,我都希望能够效仿,因为我在这个问题上几天都在挣扎。

我希望很清楚,如果没有,请不要犹豫,向我提出更多细节。 谢谢。

0 个答案:

没有答案