НА ЭТОТ вопрос не ответили должным образом, не передавая не работающий код - PullRequest
2 голосов
/ 01 мая 2020

НА ЭТОТ вопрос не ответили должным образом, не передавая не работающий код

1 Ответ

2 голосов
/ 01 мая 2020

Давайте go шаг за шагом. Мы хотим, чтобы ученики соответствовали заданным критериям.

  1. Первое, что мы видим неправильно, это то, что ученик никак не связан с группой. Итак, давайте соединим учеников с группами

    from django.db import models
    
    class Student(models.Model):
        name=models.CharField(max_length=200)
        surname=models.CharField(max_length=200)
    
    class Group20(models.Model):
        student = models.ForeignKey(Student, on_delete=models.CASCADE)
        name=models.CharField(max_length=200)
        math=models.DecimalField(decimal_places=2,max_digits=1000)
        english=models.DecimalField(decimal_places=2,max_digits=1000)
    
    class Nondemandgroup(models.Model):
        student = models.ForeignKey(Student, on_delete=models.CASCADE)
        name=models.CharField(max_length=200)
        acting=models.DecimalField(decimal_places=2,max_digits=1000)  
        cooking=models.DecimalField(decimal_places=2,max_digits=1000)
    
  2. Теперь давайте перейдем к части, в которой рассчитывается итоговая оценка

    Давайте получим всех пользователей из группы group20, которые имеют более 60 по математике Нам также нужны математика и английский sh, чтобы вычислить средний балл вместе с актерским мастерством. Итак, давайте также получим это значение.

    group20_objs = Group20.objects.filter(math__gt=60).values_list('student__name', 'math', 'english')
    

    Это даст значение в следующем формате

    [("studentA", "math_score_of_A", "english_score_of_A"), ...]
    [("Chantel", "100", "100"), ("Chantel1", "90", "85"),..]
    

    Теперь давайте получим студентов, которые в среднем по математике, engli sh и актерскому мастерству выше 70.

    final_students = []
    for item in group20_objs:
        student_name, math_score, english_score = item
        # Get acting score for user
        # Hoping student will have record here as well
        acting_score = Nondemandgroup.objects.filter(student__name=student_name).first(). acting
        if (acting_score + math_score + english_score)/3 >= 70:
            final_students.append(student_name)
    

Теперь в списке final_students будут содержаться имена учеников с оценками выше 70. Попытайтесь смешать модели, если хотите.

Также Я рекомендую просмотреть django модели документов для лучшего понимания

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