models.py
class Courses(models.Model):
course_name=models.CharField(max_length=50)
course_price=models.IntegerField()
class Exam(models.Model):
exam_name=models.CharField(max_length=101)
course=models.ForeignKey(Courses,on_delete=models.CASCADE,default='python')
exam_time=models.DateTimeField()views.py
def Examadd(request):
mycourses = Courses.objects.all()
context = {'mycourses': mycourses}
if request.method == 'POST':
newexam = request.POST.get('examname')
course = request.POST.get('courses')
examtime = request.POST.get('time')
new = Exam.objects.create(exam_name=newexam,course=course,exam_time=examtime)
new.save()
messages.success(request, "Course created successfully")
return redirect('Courselist')
return render(request,'addexam.html',context)addexam.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Add New Exam</h1>
<form method="post">
{% csrf_token %}
<label>Examname:</label>
<input type="text" name="examname">
<label>Course:</label>
<select name="courses">
{% for i in mycourses %}
<option value={{i.id}}>{{i.course_name}}</option>
{% endfor %}
</select>
<label>Exam time and date:</label>
<input type="text" name="examtime">
<button type="submit">Add</button>
</form>
</body>
</html>我正在做一个项目学习,我想要一个带有课程的下拉列表,并把它的id传递给考试table.course id是一个外键,我想把这个课程id传递给table.By中的课程列,这段代码是错误的,不能分配“1”:"Exam.course“必须是一个”Exam.course“实例。
发布于 2022-11-26 19:24:46
首先,create()方法不需要调用save()方法,您可以在Exam模型中直接分配课程id,因此视图应该是:
def Examadd(request):
mycourses = Courses.objects.all()
context = {'mycourses': mycourses}
if request.method == 'POST':
newexam = request.POST.get('examname')
course = request.POST.get('courses')
examtime = request.POST.get('time')
new = Exam.objects.create(exam_name=newexam,course__id=course,exam_time=examtime)
messages.success(request, "Course created successfully")
return redirect('Courselist')
return render(request,'addexam.html',context)https://stackoverflow.com/questions/74583150
复制相似问题