2016-09-15 43 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

相關問題