“大家好,我希望你们一切都好。我目前面临着一个问题,在模型中插入数据与外键表和OneToOne字段。我试过插入数据,但没有成功。如果有人能帮助我或提供一些如何解决这个问题的指导,那就太好了。任何见解或建议将不胜感激。提前感谢您的时间和帮助!“
型号:
class Department(models.Model):
department = models.CharField(max_length=100)
def __str__(self) -> str:
return self.department
class Meta:
ordering = ['department']
class StudentID(models.Model):
student_id = models.CharField(max_length=100)
def __str__(self) -> str:
return self.student_id
class Student(models.Model):
department = models.ForeignKey(Department, related_name='depart', on_delete=models.CASCADE)
student_id = models.OneToOneField(StudentID, related_name='studentId', on_delete=models.CASCADE)
student_name = models.CharField(max_length=100)
student_email = models.EmailField(max_length=100)
student_age = models.IntegerField(default=18)
student_address = models.TextField()
def __str__(self) -> str:
return self.student_name
class Meta:
ordering = ['student_name']
verbose_name = 'student'
class Subject(models.Model):
subject_name = models.CharField(max_length=100)
def __str__(self) -> str:
return self.subject_name
class SubjectMark(models.Model):
student = models.ForeignKey(Student, related_name='studentmark', on_delete=models.CASCADE)
subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
marks = models.IntegerField()
def __str__(self) -> str:
return f' {self.student.student_name} {self.subject.subject_name} '
class Meta:
unique_together = ['student' , 'subject']
我试过这个观点,但我得到的只是错误。
浏览次数
def create_student(request):
if request.method == "POST":
data = request.POST
student_id = data.get('student_id')
student_name = data.get('student_name')
department = data.get('department')
student_email = data.get('student_email')
student_address = data.get('student_address')
student_age = data.get('student_age')
marks = data.get('marks')
subject = data.get('subject')
Student.objects.create(
student__student_id = student_id,
student__department = department,
student__student_name = student_name,
student__student_email = student_email,
student__student_age = student_age,
student__student_address = student_address,
marks = marks,
subject__subject_name = subject
)
return redirect('/student/')
context = {'page' : "Add Student"}
return render(request, 'report/add_student.html', context)
如果有人能解决这个问题,请确保它的后视图方法与它如何插入数据从UI。谢谢。
2条答案
按热度按时间pinkon5k1#
您正在尝试使用
Student
模型上不存在的字段创建数据库行。看看你的模型定义:现在看看你传递给
Student.objects.create()
的内容:请注意,每个参数都以
student__
为前缀,因此它会查找不存在的字段(student__student_id
等)。您需要删除student__
前缀。此外,
student_id
和department
不是原始字段,它们是外键。在为StudentID
对象定义Student
对象上的关系之前,StudentID
对象必须存在。与Deparment
相同。先创造他们,然后再创造他们。最后,
marks
和subject
在Student
模型上不存在。您必须单独创建它们,就像上面的示例一样。jbose2ul2#
试试这个,希望有帮助