Как получить родительский элемент из дочернего экземпляра в django

Я пытаюсь сохранить задание в базе данных, но мне также нужно имя учителя, который создал это задание, и название задания. сейчас задание сохраняется, но я не знаю, как получить имя учителя и название задания. MODELS.PY:

class Assignment(models.Model):
    assignment_creator = models.ForeignKey(Teacher, on_delete=models.CASCADE)
    assignment_title = models.CharField(max_length=30)
    assignment_details = models.TextField()
    assignment_date = models.DateField(auto_now_add=True)

    def __str__(self):
        return str(self.assignment_title)



class Submissions(models.Model):
    submitted_by = models.ForeignKey(Student, on_delete=models.CASCADE)
    submission_file = models.FileField(null=False)
    submitted_to = models.ForeignKey(
        Teacher, on_delete=models.CASCADE, null=True)
    submission_title = models.ForeignKey(
        Assignment, on_delete=models.CASCADE, null=True, blank=True)
    submission_status = models.BooleanField(default=False)

class Teacher(models.Model):
    teacher_username = models.OneToOneField(User, on_delete=models.CASCADE)
    t_full_name = models.CharField(max_length=20)
    is_Teacher = models.BooleanField(default=True)

    def __str__(self):
        return str(self.teacher_username)

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

  <form enctype="multipart/form-data" action="{% url 'assignment' %}" method="POST">
                                    {% csrf_token %}
                                    <input type="text" name="ass_name" hidden value="{{assignment.assignment_title}}"
                                        id="">
                                    <input type="text" name="teacher_name" hidden
                                        value="{{assignment.assignment_creator}}" id="">
                                    <input required type="file" name="inputFile" id="" placeholder="upload">
                                    <button>Upload</button>

       

                                   )

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

 uploaded_file = request.FILES['inputFile']
        ass_name = request.POST.get('ass_name')
        teacher_name = request.POST.get('teacher_name')
        print(uploaded_file)
        print(ass_name)

        student = Student.objects.get(student_username=request.user)
        std_instance = student





 document = Submissions.objects.create(submitted_by=std_instance,
                                              submission_file=uploaded_file,
                                              submission_status=True,submission_title =?, submitted_to=?

                                          )

Вот некоторые предложения:

class Assignment(models.Model):
    teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, related_name="assignments")
    ...

class Teacher(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    ...

Таким образом, когда вы хотите получить доступ к учителю задания, вы можете сделать assignment.teacher, а имя пользователя можно получить, сделав assignment.teacher.user.username

Вернуться на верх