У меня 3 модели из 3 разных таблицы :
class Profile(models.Model):
player_name = models.CharField(max_length=150)
player_surname=models.CharField(max_length=200)
class Meta:
db_table='profiles'
class Results_2019(models.Model):
player_name = models.CharField(max_length=150)
first_score=models.DecimalField(decimal_places=2,max_digits=1000)
second_score=models.DecimalField(decimal_places=2,max_digits=1000)
class Meta:
db_table='results_2019'
class Results_2018(models.Model):
player_name = models.CharField(max_length=150)
first_score=models.DecimalField(decimal_places=2,max_digits=1000)
second_score=models.DecimalField(decimal_places=2,max_digits=1000)
class Meta:
db_table='results_2018'
База данных c. Игроки во всех трех моделях имеют одинаковые имена = ['Alex', 'Chandler', 'Zach'], и все они имеют данные, принадлежащие им для всех столбцов (first_score,second_score
)
База данных профиля выглядит так:
id player_name player_surname
1 Alex Chapman
2 Chandler Wellington
3 Zach Berg
База данных Results_2019 выглядит так:
id profile_id player_name first_score second_score
1 1 Alex 70 68
2 2 Chandler 60 62
3 3 Zach 90 85
База данных Results_2018 выглядит так:
id profile_id player_name first_score second_score
1 1 Alex 78 81
2 2 Chandler 56 66
3 3 Zach 97 95
Я хочу произвести расчеты на основе значений из Results_2019 и Results_2018, чтобы получить:
- игроков, у которых рост first_score и second_score в 2019 и 2018 был более 20%, а затем получил имя и фамилия, которые соответствовали этим критериям, и напечатайте в шаблоне.
Приведенная ниже формула критериев, хотя и не работает, я показываю как руководство к тому, чего я хочу достичь.
first_score_growth=((Results_2019.first_score/Results_2018.first_score)*100)
и
second_score_growth=((Results_2019.second_score/Results_2018.second_score)*100)
Что я мог сделать до сих пор:
Для этой цели я назначил внешний ключ для БД, у меня есть отдельная столбец в mysql prodile_id
. Однако даже миграции он не делает.
Что я мог вычислить и отфильтровать результаты из 1 DB таблицы (Results_2019
):
total=Results_2019.objects.annotate(
total_score=(F('first_score') + F('second_score'))/2).filter(total_score__gt=80,)
Но это вычисляет общий балл за 2019 год, но не рост .
Также, когда я добавляю внешний ключ в Results_2019, он дает мне такую OperationalError (1054, «Неизвестный столбец« Results_2019.profile_id »в« списке полей »»)
I был бы признателен за вашу помощь, чтобы разобраться в этом.