Django“xxxxxx Object”在pipe理操作侧栏显示自定义
我想更改pipe理员近期更改边栏显示“对象”名称添加的默认行为。 参考下图:
我想改变如何在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')