#django在admin中用什么方法表示模型字段

时间:2010-08-19 17:35:16

标签: django django-models django-admin

我正在尝试使用自定义unicode方法对CharField进行子类化。基本上,我希望能够对默认模型字段返回的值调用我的自定义加密方法。我尝试了以下内容,但似乎管理员正在以其他方式获取值。在我看来,这将是实现这一目标的最pythonic方式,但也许我错了。

def PasswordCharField(models.CharField):  
    def __unicode__(self):  
        return crypt(super(PasswordCharField,self).__unicode__())

1 个答案:

答案 0 :(得分:1)

我仍然不确定你为什么要尝试加密输出上的字段 - 这似乎不太安全,通常的方法(由Django自己的密码字段采用)是在入口和存储上散列数据在数据库上散列版本。

但是,如果你想沿着这条路走下去,仍然没有理由在自定义字段子类上使用__unicode__。文档中没有任何内容暗示这是Django的任何部分 - 无论是管理员还是其他任何部分 - 用于获取字段的值。事实上,管理员使用完全相同的方法来获取字段的值。

Custom field subclasses在文档中有完整描述,从内容页面链接。如果没有真正理解你想要做什么就很难说,但可能是to_python方法就是你所需要的。请记住,这会影响Django中所有使用字段的值。