Djnago的Models里添加扩展字段,在编辑界面里的字段内容以链接方式实现的方法

先来看一个例子,该例子是让其在编辑界面里添加了个字段,其字段内容为搜索同姓氏人员的一个链接,该实现是在models.py里实现的

# models.py
from django.utils.html import format_html
class Staff(models.Model):
    ...
    def seek_same(self):
        """
        编辑界面里的扩展字段的内容以链接方式实现的方法
        """
        return format_html('<a href="../../staff/?first_name__exact={}" target="_blank">{}</a>',
                           self.first_name,
                           self.first_name)
    seek_same.short_description = '同姓氏人员'  # 短描述:即字段名
    # 显示HTML tag
    # 对于用户提交的数据, 永远不要这么设置!
    seek_same.allow_tags = True

这里定义了一个def seek_same(self):的回调函数,用于返回一个扩展字段的内容,由于字段内容的回显会做转码处理,所以在这里我们需要用到一个format_html()函数,用来直接转成html格式。

format_html() 函数第一个参数为模板字串,模板字串里的变量以"{}"标识,按位置依次与第二个参数及其后的参数对应。

另外一种是实现在列表里添加扩展列的实现方式,是在admin.py里实现的,可以参考'Django后台列表添加扩展列,字段内容以链接方式实现的方法'

发布时间:
2015-09-17 13:00
分类:
标签: