2016-09-15 104 views
1

当荫试图让学生的程度,并与代码做返回值:无法将“DeferredAttribute”对象为str隐含

def __str__(self): 
    return self.student_subject + " " + Student.last_name 

我得到上面的错误消息。 这里是整个Django的代码:

from django.db import models 

# Create your models here. 


class Student(models.Model): 
    first_name = models.CharField(max_length=15) 
    last_name = models.CharField(max_length=15) 
    age = models.IntegerField(default=0) 
    birth_date = models.DateTimeField() 

    def __str__(self): 
     return self.first_name + " " + self.last_name 


class Degree(models.Model): 
    student_id = models.ForeignKey(Student, on_delete=models.CASCADE) 
    student_subject = models.CharField(max_length=150) 
    student_degree = models.IntegerField(default=0) 

    def __str__(self): 
     return self.student_subject + " " + Student.last_name 

的错误发生,因为我想inherite从上面的类学生 返回这里是错误消息:

TypeError at /admin/sellingportal/degree/ 

Can't convert 'DeferredAttribute' object to str implicitly 

Request Method:  GET 
Request URL: http://127.0.0.1:8000/admin/sellingportal/degree/ 
Django Version:  1.10.1 
Exception Type:  TypeError 
Exception Value:  

Can't convert 'DeferredAttribute' object to str implicitly 

Exception Location:  C:\Users\Muham\PycharmProjects\managementsite\managementstudio\sellingportal\models.py in __str__, line 22 
Python Executable: C:\Python34\python.exe 
Python Version:  3.4.4 
Python Path:  

['C:\\Users\\Muham\\PycharmProjects\\managementsite\\managementstudio', 
'C:\\Windows\\SYSTEM32\\python34.zip', 
'C:\\Python34\\DLLs', 
'C:\\Python34\\lib', 
'C:\\Python34', 
'C:\\Python34\\lib\\site-packages'] 

Server time: Fri, 16 Sep 2016 01:04:08 +0200 

回答

2

只是将其更改为:

和一切应该没问题。

您不能设置Student.last_name,因为您必须显示从哪个对象中取出姓。

+1

它的工作,谢谢塞巴斯蒂安:) –

+0

标记为答案,最好的祝愿 – sebb

相关问题