pic*_*mon 1 python django django-models django-views
我想显示值
(姓氏和名字)
从作为ForeignKey的模型.我希望值以选择的形式存在,以便用户可以选择他们想要分配对象的学生的姓名.
例如,我有学生表格和Testscore表格,当老师想要提交学生的考试成绩时,在考试表格中会有一个包含学生姓名的下拉表格,所以老师可以选择他想要的学生将测试分数分配给.
写完下面的代码后,我收到了这个错误:
TypeError at /submiit_test/
coercing to Unicode: need string or buffer, User found
Run Code Online (Sandbox Code Playgroud)
models.py
class Student(models.Model):
user=models.ForeignKey(User,unique=True)
pic=models.ImageField(upload_to="profile_image")
first_name=models.CharField(max_length=100)
last_name=models.CharField(max_length=100)
class TestScore(models.Model):
user=models.ForeignKey(User)
studd=models.ForeignKey(Student)
year=models.CharField(max_length=20)
subject_1=models.CharField(max_length=50, choices=SUBJECT_CHOICES)
score_1=models.CharField(max_length=50)
subject_2=models.CharField(max_length=50, choices=SUBJECT_CHOICES)
score_2=models.CharField(max_length=50)
subject_3=models.CharField(max_length=50, choices=SUBJECT_CHOICES)
score_3=models.CharField(max_length=50)
def __unicode__(self):
return unicode(self.studd)
class TestScoreForm(ModelForm):
class Meta:
model=TestScore
fields=('year','studd','subject_1','score_1','subject_2','score_2','subject_3','score_3')
Run Code Online (Sandbox Code Playgroud)
views.py
def test_submit(request):
if request.method=="POST":
form=TestScoreForm(request.POST, request.FILES)
if form.is_valid():
data=form.cleaned_data
newtest=TestScore(
user=request.user,
studd=data['studd'],
year=data['year'],
subject_1=data['subject_1'],
score_1=data['score_1'],
subject_2=data['subject_2'],
score_2=data['score_2'],
subject_3=data['subject_3'],
score_3=data['score_3'])
newtest.save()
return HttpResponse('thanks')
else:
return HttpResponse('fill the form correctly')
else:
return render_to_response('posttest.html',{'TestScoreForm':TestScoreForm,'TestScore':TestScore},context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
我修好了.它来自
学生
楷模.我不得不改变它
def __unicode__(self):
return '%s' % (self.user)
Run Code Online (Sandbox Code Playgroud)