【发布时间】:2014-05-09 12:01:23
【问题描述】:
我创建了一个模型 Student,它从 Django 用户 扩展而来,是另一个模型的外键,同时它有一个名为 year 的整数字段。我想要做的是保存一个表单,它有 2 个字段。一个是课程ID,另一个是整数字段year。当我点击提交时,我收到一个错误Cannot assign "u'2'": "Student.course" must be a "Course" instance.
models.py
class Student(models.Model):
user = models.OneToOneField(User)
course = models.ForeignKey(Course)
year = models.IntegerField(validators=[MinValueValidator(1),
MaxValueValidator(7)])
view.py
def step3(request):
user = request.user
if request.method == 'POST':
form = SelectCourseYear(request.POST)
if form.is_valid():
form.save()
return render_to_response("registration/complete.html", RequestContext(request))
else:
form = SelectCourseYear()
return render(request, 'registration/step3.html',)
forms.py
class SelectCourseYear(forms.ModelForm):
course = forms.CharField()
year = forms.IntegerField(required=True)
class Meta:
model = Student
fields = ['user', 'course', 'year']
【问题讨论】:
-
你能不能试着写3行代码而不是
form.save():obj = form.save(commit=False),obj.course_id = request.POST['course'],然后obj.save()? -
试过了,但仍然出现此错误无法分配“u'1'”:“Student.course”必须是“Course”实例。
-
你在哪里分配用户的课程?因为我没有得到您分配课程属性的代码。
-
如果这就是您的意思,那么学生模型对课程模型有一个“课程”外键。
标签: python django django-forms