Найти pk в наборе queryset Django

У меня проблема с получением одного id из кверисета. Выкладываю свои модели и представления, чтобы было понятнее: models.py

class MissionEntry(models.Model):
    student = models.ForeignKey(
        Student, on_delete=models.DO_NOTHING, blank=True, null=True)
    mission = models.ForeignKey(
        Mission, on_delete=models.DO_NOTHING, null=True, blank=True)
    log_entry = models.ForeignKey(
        LogEntry, on_delete=models.DO_NOTHING, blank=True, null=True)
    learning_objective = models.ForeignKey(
        LearningObjective, on_delete=models.DO_NOTHING, blank=True, null=True)
    grade = models.CharField(
        max_length=10, choices=GRADING_VALUE, blank=True, null=True)
    note = models.TextField(blank=True, null=True)
    debriefing = models.TextField(blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return str(self.mission) + ' ' + str(self.log_entry)

    class Meta:
        verbose_name_plural = 'Mission Entries'


class MissionEntryStatus(models.Model):
    mission = models.ForeignKey(
        Mission, on_delete=models.PROTECT, null=True, blank=True)
    student = models.ForeignKey(Student, on_delete=models.PROTECT)
    is_completed = models.BooleanField(default=False)
    is_failed = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)


class StudentMission(models.Model):
    mission = models.ForeignKey(Mission, on_delete=models.PROTECT)
    student_training_course = models.ForeignKey(
        StudentTrainingCourse, on_delete=models.PROTECT)
    mission_status = models.ForeignKey(
        MissionEntryStatus, on_delete=models.PROTECT, blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ['mission__name']

    def __str__(self):
        return self.mission.name

class LogEntry(models.Model):
    aircraft = models.ForeignKey(Aircraft, on_delete=models.DO_NOTHING)
    adep = models.ForeignKey(
        Aerodrome, on_delete=models.PROTECT, related_name='adep')
    ades = models.ForeignKey(
        Aerodrome, on_delete=models.PROTECT, related_name='ades')
    date = models.DateField()
    etd = models.TimeField()
    ata = models.TimeField()
    eet = models.TimeField()
    function_type = models.ForeignKey(FunctionType, on_delete=models.PROTECT)
    student = models.ForeignKey(
        Student, on_delete=models.PROTECT, blank=True, null=True)
    instructor = models.ForeignKey(
        Instructor, on_delete=models.PROTECT, blank=True, null=True)
    student_mission = models.ForeignKey(
        'mission.StudentMission', on_delete=models.PROTECT, null=True, blank=True)
    note = models.TextField(null=True, blank=True)
    cross_country = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

views.py

def student_mission_list(request, pk):
    student = Student.objects.get(id=pk)
    student_training_course = StudentTrainingCourse.objects.filter(
        student_id=student.id)
    missions = StudentMission.objects.filter(
        student_training_course_id__in=student_training_course)
    mission_entry = MissionEntry.objects.filter(student_id=student)
    log_entry = LogEntry.objects.filter(student_mission_id__in=missions)
    print(log_entry)
    context = {
        'student': student,
        'missions': missions,
        'mission_entry': mission_entry,
    }
    return render(request, 'mission/student_mission_list.html', context)

Фактически, мне нужно получить одно значение для log_entry. Проблема в том, что, очевидно, я получаю несколько значений log_entry. Но я хотел бы получить единственное пк для log_entry. Есть какие-нибудь предложения? Должен ли я переделать файл models.py?

попробуйте это:

log_entry = LogEntry.objects.get(student_mission_id__in=missions)
print(log_entry.id)
Вернуться на верх