Queryset для моделей отношений ФК в Django - PullRequest
2 голосов
/ 24 мая 2019

Это мои модели и поля:

Models.py

  • Курс:
    • title
    • slug
  • Необходимые условия курса
    • this_course = ForeignKey (курс)
    • prerequisite_of_course = ForeignKey (курс)
  • Учебный план:
    • курс = ForeignKey (курс)
    • title
    • slug
  • Зачисление:
    • student = ForeignKey (пользователь)
    • учебная программа = ForeignKey (Учебная программа)
    • дата

Бриф моей системы:

  1. Как видно из моего файла модели, в этой системе курсы имеют предварительное условие. Пресон может не пройти предварительное условие, конечно, не может пройти курс.
  2. Каждый курс представлен для зачисления в модель под названием «Учебный план».

И, наконец, моя проблема:

На самом деле, я знаю, чтоЯ должен сначала проверить зачисление студентов и финd «Учебный план», который у него есть, и тем самым найти весь курс студента.Затем среди курса я найду курс с prerequisite_of_course и, наконец, проверим ученика для каждого из этих обязательных проверок, чтобы учащийся записался на курс обучения!

Мне очень сложно написать этот запрос?Вы можете мне помочь?

1 Ответ

2 голосов
/ 24 мая 2019

Отметьте это, это может помочь вашему запросу

# all student enrollments
all_enrollment = Enrollement.objects.filter(student=user)


# all students  curriculum_ids
all_curriculum_ids =  all_enrollment.values_list('curriculum', flat=True)

# all curriculum object list
all_curriculum = Curriculum.objects.filter(pk__in=all_curriculum_ids)


#  all student curriculum courses
all_courses_ids = all_curriculum.values_list('course', flat=True)

# we have all courses that student participated
all_courses = Course.objects.filter(pk__in=all_courses_ids)


# Now getting prerequisite_of_course ids
all_prerequisite_of_course_ids = CoursePrerequisite.objects.filter(this_course=this_course,prerequisite_course__isnull=False).value_list('prerequisite_course')


# here checking if student took all prequisite courses
for prerequisite_of_course_id in all_prerequisite_of_course_ids:
    if all_courses.filter((pk__in=prerequisite_of_course_id).exists():
        print("Paticipated")
    else:
        print("In this course id student did not participated", prerequisite_of_course_id)
        print("Tell Student to go and complete this course")
...