Django“xxxxxx Object”在pipe理操作侧栏显示自定义

我想更改pipe理员近期更改边栏显示“对象”名称添加的默认行为。 参考下图:

在最近的动作模块中,它还将新对象显示为“MyModelName对象”

我想改变如何在pipe理员命名。 理想情况下,我希望能够将其从“MyModelName对象”更改为,如“策略”对象示例中的“策略:{{策略的”策略名称“字段的值}}。

我在想,我的Patient模型的__unicode__处理了这个问题,但似乎没有。 任何援助表示赞赏。

__unicode__确实做到了。 你的模型应该是这样的:

 class SomeModel(models.Model): def __unicode__(self): return 'Policy: ' + self.name 

在Python 3上,你需要使用__str__

 def __str__(self): return 'Policy: ' + self.name 

我同意这些答案,但在我的机器上不工作。

我使用Python3和Django1.8,这些解决scheme仍然无法正常工作,所以我尝试使用这些方法。

 class MyModel(models.Model): name = models.CharField(max_length=60) def __str__(self): return 'MyModel: {}'.format(self.name) 

正如其他人所说,你看到的string来自__unicode__方法。 但是事情是,当pipe理员创build日志事件时,pipe理员保存对象的string表示,因此如果在保存日志条目后添加__unicode__实现,只有在创build新的活动之后才会在旧条目上看到新的标题

你是对的,认为__unicode__这样做。 我现在有这个运行:

 class Film(models.Model): title = models.CharField(max_length=200) ... def __unicode__(self): return self.title 

当我查看最近的行动列表时,我看到了我刚刚编辑的电影的标题。

提到__str____unicode__方法的答案是正确的。 然而,正如文档中所述,从版本1.6(我认为),你可以使用python_2_unicode_compatible修饰器的Python 2和Python 3:

 from __future__ import unicode_literals from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatible class MyClass(models.Model): def __str__(self): return "Instance of my class" 

您也可以在非Model对象中使用上述内容。

您需要定义您想要显示的列

例如:

 class POAdmin(admin.ModelAdmin): list_display = ('qty', 'cost', 'total')