": "StudentsSubmittedDocument.Students_Enrollment_Records" 必须是 "StudentsEnrollmentRecord" 实例,django"/>

首页 > 解决方案 > "": "StudentsSubmittedDocument.Students_Enrollment_Records" 必须是 "StudentsEnrollmentRecord" 实例

问题描述

视图.py

    id = request.POST.get('ids')
    studentname = StudentProfile(id=id)

    myfile = request.FILES['myfile']
    fs = FileSystemStorage()
    filename = fs.save(myfile.name, myfile)
    uploaded_file_url = fs.url(filename)
    student = StudentsEnrollmentRecord.Student_Users

    V_insert_data = StudentsEnrollmentRecord(
            Student_Users=studentname, Payment_Type=payment,
            Education_Levels=educationlevel,School_Year=schoolyear
        )
        V_insert_data.save()
        insert_doc = StudentsSubmittedDocument(
            Students_Enrollment_Records = studentname,
            Document = myfile
        )
        insert_doc.save()

    return render(request, 'Homepage/pending.html')

模型.py

class StudentProfile(models.Model):
    DoesNotExist = None
    objects = None
    Pending_Request = [
        ('Pending_Request', 'Pending_Request'),
        ('Enrolled', 'Enrolled'),
    ]
    Image = models.ImageField(upload_to='images',null=True,blank=True)
    Username = models.CharField(max_length=500,null=True,blank=True)
    Password = models.CharField(max_length=500,null=True,blank=True)
    LRN = models.IntegerField(null=True,blank=True)
    Firstname = models.CharField(max_length=500,null=True,blank=True)
    Middle_Initial = models.CharField(max_length=500,null=True,blank=True)
    Lastname = models.CharField(max_length=500,null=True,blank=True)

class StudentsEnrollmentRecord(models.Model):
    Student_Users = models.ForeignKey(StudentProfile, related_name='+', on_delete=models.CASCADE,null=True)
    School_Year = models.ForeignKey(SchoolYear, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
    Courses = models.ForeignKey(Course, related_name='+', on_delete=models.CASCADE, null=True, blank=True)

class StudentsSubmittedDocument(models.Model):
    Students_Enrollment_Records = models.ForeignKey(StudentsEnrollmentRecord, related_name='+', on_delete=models.CASCADE,blank=True,null=True)
    Document_Requirements = models.IntegerField(null=True,blank=True)
    Document = models.FileField(upload_to='files',null=True,blank=True)

如何修复此错误?我尝试了很多次来解决这个问题,但我不能,我不知道如何解决这个错误,我只想保存StudentsEnrollmentRecord(Student_Users)StudentsSubmittedDocument(Students_Enrollment_Records),顺便说一下这是我的错误:

ValueError at /newEnroll/ Cannot assign "": "StudentsSubmittedDocument.Students_Enrollment_Records" must be a "StudentsEnrollmentRecord" instance.

标签: django

解决方案


在您的变量insert_doc中,将您的Students_Enrollment_Records参数从studentnameto更改为V_insert_data,如下所示:

insert_doc = StudentsSubmittedDocument(
    Students_Enrollment_Records = V_insert_data,
    Document = myfile
)

该错误清楚地表明您没有为模型中的Students_Enrollment_Records字段分配正确的实例StudentsSubmittedDocument

PD:我建议您更改ForeignKey字段名称并将它们设为单数,因为它仅指向一条记录,复数名称可能会导致混淆。


推荐阅读