存储在数据库中的数据是 HTML。我无法改变这个事实,但我想将它隐藏在我的 django 管理站点中。
在数据库填充模型之前,我想捕获它并将 html 实体转换为 unicode。当模型保存到数据库时,我想反转这个过程。
我可以进行从 HTML 实体到 unicode 的实际转换,反之亦然,但我不太了解 Django 来完成这个。
我已经查看了管理员的模型表单,但是当数据显示在 list_display 或站点上的其他位置时,这将不起作用。
在哪里/如何最好的方式来解决这个问题?
存储在数据库中的数据是 HTML。我无法改变这个事实,但我想将它隐藏在我的 django 管理站点中。
在数据库填充模型之前,我想捕获它并将 html 实体转换为 unicode。当模型保存到数据库时,我想反转这个过程。
我可以进行从 HTML 实体到 unicode 的实际转换,反之亦然,但我不太了解 Django 来完成这个。
我已经查看了管理员的模型表单,但是当数据显示在 list_display 或站点上的其他位置时,这将不起作用。
在哪里/如何最好的方式来解决这个问题?
custom field
如果您想要自动调用/保存此字段的任何内容,请考虑制作一个。具体来说,在 中设置数据库到模型的转换,在 中设置to_python
模型到数据库的转换get_prep_value
。
如果这是专门针对管理员某个区域的行为,您也可以将其全部设置在ModelAdmin
. list_display
可以指向可以对输出做任何事情的只读字段。
纯管理员:
class ModelAdmin(admin.ModelAdmin):
list_display = ('_myfield',)
readonly_fields = ('_myfield', )
form = MyModelForm # modelform with overriden save() and init
# converting values to / from db.
def _myfield(self, obj):
return whatever_conversion_here(obj.myfield)