Как сделать расчет и назначить условие в моделях ManytoMany в Django - PullRequest
0 голосов
/ 04 мая 2020

Ребята, я новичок в Django и изучаю его документы и YouTube. Но я не могу найти ответ на мои c вопросы, так как я уверен, что я делаю ошибку в своем коде.

models.py

class Profiles(models.Model):
    name=models.CharField(max_length=200)
    surname=models.CharField(max_length=200)

    class Meta:
        db_table='profiles'

class Year20(models.Model):
    name=models.CharField(max_length=200)
    profiless=models.ManyToManyField(Profiles)    
    math=models.DecimalField(decimal_places=2,max_digits=1000)
    english=models.DecimalField(decimal_places=2,max_digits=1000)

    class Meta:
        db_table='year20'


class Year19(models.Model):
    name=models.CharField(max_length=200)
    profiless=models.ManyToManyField(Profiles) 
    math=models.DecimalField(decimal_places=2,max_digits=1000)
    english=models.DecimalField(decimal_places=2,max_digits=1000)

    class Meta:
        db_table='year19'


class Faculty(models.Model):
    name=models.CharField(max_length=200)
    profiless=models.ManyToManyField(Profiles) 
    acting=models.DecimalField(decimal_places=2,max_digits=1000)  

     class Meta:
        db_table='faculty'

У меня есть 2 вопроса:

  1. Когда я делаю правильную оценку ManytoMany модель таким образом? Profiles модель относится ко всем таблицам, так как содержит их имя и фамилию.

  2. Как отфильтровать значения из нескольких таблиц, провести расчет и назначить условие? I assigned ManytoMany model to each table in hope be able to make calculations using variables form different tables.

Я не хочу, чтобы вы думали, что я спрашиваю без исследования и попытки. Что я мог сделать, это фильтрация и расчет только из 1 таблицы.

score_merit=Year19.objects.annotate(
final_grade=F('math') / F('english')).filter(final_grade__gt=61,)

Однако я хочу получить итоговый балл:

math_avrg=(year19.math+year20.math)/2
eng_avrg=(year19.eng+year20.eng)/2

final_score=(math_avrg+eng_avrg+acting)/3

и, наконец, напечатать имя и фамилию студента, где final_score > 70

Я хочу учиться как объединить значения из разных таблиц и произвести расчеты и, наконец, выполнить фильтрацию по условиям и напечатать их имена и фамилии.

Я был бы признателен, если бы вы могли поделиться некоторым кодом и направить меня, который было бы намного проще понять и изучить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...