2016-09-01 45 views
1

工作我的Django管理面板顯示object而不是self.name的對象。Django管理顯示對象 - 不與__unicode__或__str__

我在這裏經歷了幾個類似的問題,但似乎無法解決這個問題。 __unicode____str__對書籍和作者都有同樣的結果。我改變了這些路線,並在每次更改中添加了新的作者/書籍,但沒有任何改變。

MODELS.PY

from django.db import models 
from django.contrib.auth.models import User 


# Create your models here. 

class Author(models.Model): 
    name = models.CharField(max_length=100) 


def __str__(self): 
    return self.name 


class Book(models.Model): 
    auto_increment_id = models.AutoField(primary_key=True) 
    name = models.CharField('Book name', max_length=100) 
    author = models.ForeignKey(Author, blank=False, null=False) 
    contents = models.TextField('Contents', blank=False, null=False) 


def __unicode__(self): 
    return self.name 

我用兩個的unicode & STR互換,同樣的結果。

下面是按菜單/操作管理面板的屏幕截圖。

1屏幕

1st screen

作者名單

Author List

單作者

Single Author

+0

Python通過縮進來定義類/函數的主體,它不僅僅是代碼可讀性。 –

回答

3

你的縮進不正確。您需要縮進代碼以使其成爲模型的一種方法。它應該是:

class Author(models.Model): 
    name = models.CharField(max_length=100) 

    def __str__(self): 
     return self.name 

如果您正在使用Python 3,使用__str__。如果您使用的是Python 2,請使用__unicode__,或使用修飾器python_2_unicode_compatible裝飾您的課程。更改代碼後,請確保重新啓動服務器,以使代碼更改生效。

+0

我的上帝,你已經幫了這麼多,這些縮進將是我的結局,我已經是PHP小姐了。 – clusterBuddy

相關問題