python - 如何猴子补丁django功能?
问题描述
我想自定义 django 管理change_list_result
行内容,所以我猜想覆盖与 change_list_result
功能相关。
我发现可以display_for_field
通过items_for_result
in调用django.contrib.admin.templatetags.admin_list
。admin_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
解决方案
在这里,您覆盖了局部变量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
文件中的(其中一个)第一行导入。
推荐阅读
- python - 数据框 Python 中的正则表达式
- shell - 使用“ls”打印完整路径而不使用尾随“*”
- javascript - 在“If; else”条件下设置两个可观察对象(Angular 7+)
- ruby-on-rails - 通过 id 将用户关联到模型
- mysql - 使用带有 mySQL IN() 函数的数字
- javascript - 如何为按钮创建自动点击?//JS
- html - Html 输入文件:如何更改默认窗口标题?
- stripe-payments - 无法获取 Stripe Checkout 会话对象
- sql - 如果列包含特定值,则从结果中排除值
- javascript - 在 debounce 函数中声明 args 和 context 有什么意义