首页 > 解决方案 > 如何猴子补丁django功能?

问题描述

我想自定义 django 管理change_list_result行内容,所以我猜想覆盖与 change_list_result功能相关。

我发现可以display_for_field通过items_for_resultin调用django.contrib.admin.templatetags.admin_listadmin_list.py

我将以下代码放入manage.py,但不起作用。

from django.contrib.admin.utils import display_for_field
from warehouse.monkey_patching import _display_for_field_mod

display_for_field = _display_for_field_mod

标签: pythondjango

解决方案


在这里,您覆盖了局部变量dispaly_for_field。如果你想覆盖它,你需要设置模块的属性:

from django.contrib.admin import utils
from warehouse.monkey_patching import _display_for_field_mod

utils.display_for_field = _display_for_field_mod

正如您可能已经知道的那样,您必须确保在其他模块导入该函数之前对其进行修补,否则,这些将获得对“旧”函数的引用。因此,您可能应该将其作为manage.py文件中的(其中一个)第一行导入。


推荐阅读