Django 管理自定义列数据格式

Django admin custom columns data format

在我的 admin.ModelAdmin 中,我添加了一个方法来从另一个 table:

中检索描述
   def get_nome_cli(self, obj):
       codice_cli = obj.cli_codice
       try:
           description= Cli.objects.filter(codice=codice_cli)
       except:
           nome='not found'       
       return '<a>{}></a>'.format(description)

它有效,但它显示的数据如下:

<a>[<Cli: gigilatrottola - 2>]></a>

我缺少什么才能让它看起来像这样:

<a> gigilatrottola - 2 </a>

直接给字段名而不是对象。

喜欢: 描述。(字段名称)

假设你的字段名称是des,

return '<a>%s - %s</a>', %(description.des, desctiprion.id)

考虑到每个 codice_cli 只能过滤一个 Cli 对象,您可能需要重构代码以使用 get() 查询集方法。其次,如果结果为空列表,filter() 方法不会引发异常,因此 try / except 块在这种情况下无用。

def get_nome_cli(self, obj):
    codice_cli = obj.cli_codice
    try:
        description = Cli.objects.get(codice=codice_cli)
    except Cli.DoesNotExist:
        return 'Cli not found'       
    return '<a>{}></a>'.format(description)
get_nome_cli.allow_tags = True

如果您希望在您的字段中有可点击的链接,您必须将 allow_tags 属性 设置为 True

不要忘记向您的模型添加 __unicode__()__str__() 方法,这取决于您对 python 的喜好,这将提供您正在寻找的正确表示.

class Cli(models.Model):
    # .....
    def __unicode__(self):
        return "%s - %s" % (self.description, self.pk)