Django-Models:TypeError:强制转换为Unicode:需要字符串或缓冲区,用户找到

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)

pic*_*mon 7

我修好了.它来自

学生

楷模.我不得不改变它

def __unicode__(self):
     return '%s' % (self.user)
Run Code Online (Sandbox Code Playgroud)