显示python对象名称

Luc*_*ues 0 python django object self

在django管理页面中,一切都只显示'xxx对象',而不是我在模型中写的名称:

class categoria(models.Model):
    nomeCategoria = models.CharField(max_length=50)
    imagemCategoria = models.CharField(max_length=200)

def __str__(self):
   return self.nomeCategoria

class post(models.Model):
    tituloPost = models.CharField(max_length=200,default='tituloPost')
    textoPost = models.TextField()
    textoTagPost = models.TextField()
    categoria = models.ForeignKey(categoria)
    enviadoNewsletter = models.BooleanField(default=False)

def __str__(self):
   return 'Post: ' + self.tituloPost    
Run Code Online (Sandbox Code Playgroud)

我正在使用python 3.4

我还尝试将此代码放在admin.py中:

class categoriaAdmin(admin.ModelAdmin):
    list_display = ('nomeCategoria','imagemCategoria')

admin.site.register(categoria, categoriaAdmin)
Run Code Online (Sandbox Code Playgroud)

但这只在列表中显示正确的名称.我认为str的重点是到处显示正确的字段,或者我错了?

我是新手,抱歉我的英语,希望有人可以提供帮助.

小智 5

str或更好的unicode需要适当地间隔开,以便类具有方法,而不是模块.此外,您应该使用模型类的标题(即类Categoria)

class categoria(models.Model):
    nomeCategoria = models.CharField(max_length=50)
    imagemCategoria = models.CharField(max_length=200)

    def __str__(self):
       return self.nomeCategoria

class post(models.Model):
    tituloPost = models.CharField(max_length=200,default='tituloPost')
    textoPost = models.TextField()
    textoTagPost = models.TextField()
    categoria = models.ForeignKey(categoria)
    enviadoNewsletter = models.BooleanField(default=False)

    def __str__(self):
       return 'Post: ' + self.tituloPost    
Run Code Online (Sandbox Code Playgroud)