Как получить родительский элемент из дочернего экземпляра в 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