我有4个型号,来自4个不同的表:
class Profile(models.Model):
player_name = models.CharField(max_length=150)
player_surname=models.CharField(max_length=200)
sport_type=models.CharField(max_length=200)
class Results_2019(models.Model):
player_name = models.CharField(max_length=150)
first_score=models.DecimalField(decimal_places=2)
second_score=models.DecimalField(decimal_places=2)
average_score=models.DecimalField(decimal_places=2)
class Results_2018(models.Model):
player_name = models.CharField(max_length=150)
first_score=models.DecimalField(decimal_places=2)
second_score=models.DecimalField(decimal_places=2)
average_score=models.DecimalField(decimal_places=2)
class Weight(models.Model):
player_name = models.CharField(max_length=150)
year2019=models.DecimalField(decimal_places=2)
year2018=models.DecimalField(decimal_places=2)
我使用这些模型基于满足特定条件进行过滤。外键对我不起作用(我试过我没有什么错)。
ABC = []
for MyResults in [Results_2019, Results_2018 ]:
results_list = MyResults.objects.annotate(increase=F('second_score') /
F('first_score'),total=F('second_score') +
F('first_score',).filter(increase__gt=0.2,total__gt=average_score,)
ABC.extend(results_list.values_list('player_name', flat=True))
DoubleSNames = list(set([x for x in ABC if ABC.count(x) == 2]))
finallist=list(Profile.objects.filter(player_name__in=DoubleSNames).
values_list('player_name', 'player_surname'))
此code返回符合条件的玩家及其姓氏列表。
但是我无法将Weight class
嵌入列表并基于]进行过滤>
score_weight=first_score/Weight.year19
然后过滤
score_weight > 30
我尝试嵌入
weight_list=[Weight.year19,Weight.year18]
如何使用
weight_list
和MyResults
来计算score_weight=first_score/Weight.year19
该怎么做?
完全有可能做到这一点吗?
我有来自4个不同表的4个模型:类Profile(models.Model):player_name = models.CharField(max_length = 150)player_surname = models.CharField(max_length = 200)sport_type = models ....
我编写了自己的代码,由于这种情况,结果始终为空:
total=second+first
score_weight=total/weight19
if increase > 0.2 and total > average and average > 50 and total > 70 and
score_weight > 30 : ABC.append(result.player_name)
A)可能的错误: