Нельзя присвоить значение, оно должно быть экземпляром django

Я получаю следующую ошибку при вставке значений через метод request.post.get

Невозможно присвоить значение "'1'": "Faculty_Feedback.department" должен быть экземпляром "Department".

.

Модель, в которую я хочу вставить данные, следующая

class Faculty_Feedback(models.Model):
    department = models.ForeignKey(Department,on_delete=models.CASCADE)
    program    = models.ForeignKey(Program,on_delete=models.CASCADE)
    resp1 = models.IntegerField(default=1)
    resp2 = models.IntegerField(default=1)
    resp3 = models.IntegerField(default=1)
    resp4 = models.IntegerField(default=1)
    resp5 = models.IntegerField(default=1)
    resp6 = models.IntegerField(default=1)
    resp7 = models.IntegerField(default=1)
    resp8 = models.IntegerField(default=1)
    resp9 = models.IntegerField(default=1)
    resp10 = models.IntegerField(default=1)
    resp11 = models.IntegerField(default=1)
    resp12 = models.IntegerField(default=1)
    resp13 = models.IntegerField(default=1)

Я вставляю значения факультета и программы в шаблон из следующего кода

departments = Department.objects.all()
    programs= Program.objects.all()
    context = {
        "departments":departments,
        "programs":programs
    }

Ниже приведен код шаблона

<div class="form-group">
                <label for="text">Department</label>
                <select style="width: 90%" class="form-control" name="department" id="department">
                    {% for department in departments%}
                    <option value="{{department.pk}}">{{department.dept}}</option>
                    {% endfor%}
                </select>
            </div>

            <div class="form-group">
                <label for="text">Program</label>
                <select style="width: 90%" class="form-control" name="program" id="program">
                    {% for program in programs%}
                    <option value="{{program.pk}}">{{program.program}}</option>
                    {% endfor%}
                </select>
            </div>

Я вставляю данные обратной связи, получая значения через метод request.post.get

def feedback(request):
    if request.method == "POST":
        dept = request.POST.get('department')
        prog = request.POST.get('program')
        q1 = request.POST.get('f1')
        q2 = request.POST.get('f2')
        q3 = request.POST.get('f3')
        q4 = request.POST.get('f4')
        q5 = request.POST.get('f5')
        q6 = request.POST.get('f6')
        q7 = request.POST.get('f7')
        q8 = request.POST.get('f8')
        q9 = request.POST.get('f9')
        q10 = request.POST.get('f10')
        q11 = request.POST.get('f11')
        q12 = request.POST.get('f12')
        q13 = request.POST.get('f13')
        com1 = request.POST.get('com1')
        com2 = request.POST.get('com2')
      

        save_feedback = Faculty_Feedback(department = dept , program = prog,resp1=q1, resp2=q2, resp3=q3, resp4=q4,
                                         resp5=q5, resp6=q6, resp7=q7, resp8=q8,
                                         resp9=q9, resp10=q10, resp11=q11, resp12=q12,
                                         resp13=q13)
        save_comments = Faculty_Comments(department = dept,program = prog,comment_1 = com1 , comment_2 = com2)
        save_feedback.save()
        save_comments.save()

Департамент и программа должны быть объектом, а не идентификатором.

dept_object = Department.objects.get(id=dept)
program_object = Program.objects.get(id=prog)

save_feedback = Faculty_Feedback(department = dept_object , program = program_object,resp1=q1, resp2=q2, resp3=q3, resp4=q4,
                                     resp5=q5, resp6=q6, resp7=q7, resp8=q8,
                                     resp9=q9, resp10=q10, resp11=q11, resp12=q12,
                                     resp13=q13)

Получите ID из запроса, затем получите объект для этого id и добавьте его при создании новой записи.

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