Один объект из набора запросов

Мне нужна помощь с небольшой проблемой, с которой я сталкиваюсь в своем проекте. У меня есть модель, в которой есть внешний ключ с большим количеством записей, и я хотел бы взять только один элемент из этих записей. Фактически, моя проблема заключается в следующем: Мне нужно получить идентификатор одной миссии, чтобы использовать другие функции. Код работает нормально, моя проблема в том, что я не знаю, в каком порядке получить элемент миссии из этого набора запросов:

models.py

views.py

def student_mission_list(request, pk):
    student = Student.objects.get(id=pk)
    student_training_course = StudentTrainingCourse.objects.get(
        student_id=student)

    missions = StudentMission.objects.filter(
        student_training_course_id=student_training_course)

    context = {
        'student': student,
        'missions': missions,
    }
    return render(request, 'mission/student_mission_list.html', context)

На самом деле, в student_mission_list мне нужно получить идентификатор миссии!!! Проблема в том, что если я пытаюсь получить его из модели StudentTraining или MissionEntryStatus, у меня есть несколько миссий; но я хотел бы иметь только соответствующий идентификатор миссии, но я не могу найти способ. Есть ли какие-нибудь предложения? Возможно, мне нужно изменить базу данных, но я не знаю где. Большое спасибо всем вам за помощь

Так, как вы сейчас настроили, у курса обучения может быть только ОДИН студент, но, поскольку ForeignKey является отношением ManyToOne, МНОГО студентов могут иметь один и тот же курс обучения. Я думаю вы хотите, чтобы у студента был ОДИН курс обучения, но у курса обучения было МНОГО студентов. Я предполагаю, что вам нужно следующее:

class Student(models.Model):
    ...

    training_course = models.ForeignKey(StudentTrainingCourse, on_delete=models.CASCADE)
    
    ...

Затем вы можете получить идентификатор конкретной миссии, например:

def student_mission_list(request, pk):
    student = Student.objects.get(id=pk)
    training_course = student.training_course
    mission = Mission.objects.get(training_course=training_course)
    # If you just want the mission ID:
    mission_id = mission.pk

    missions = StudentMission.objects.filter(
        student_training_course_id=student_training_course)

    context = {
        'student': student,
        'missions': missions,
    }
    return render(request, 'mission/student_mission_list.html', context)
    
Вернуться на верх