django - 区分 ModelAdmin 媒体以在 Django 中添加/更改页面

为了在 Django 管理中封装自定义功能,我提供了自定义 ModelAdmin class实际上看起来像这样:

class ArticleAdmin(admin.ModelAdmin):
    class Media:
        js = ("my_code.js",)

我注意到 my_code.js 会在添加页面和更改页面中加载,但我只需要在添加页面中加载它。是否可以这样做(以及如何)?

最佳答案

不确定 StackOverflow 如何喜欢挖掘旧帖子,但我发现这是针对我自己的问题进行的研究,并找到了一个比公认的答案稍微更优雅的解决方案。您可以覆盖 render_change_form 方法来更新 context['media'] 定义。这个问题的示例:

def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):
    if add:
        if context.has_key('media'):
            old_media = context['media']
        else:
            old_media = forms.Media()
        context.update({'media': old_media+forms.Media(js=("js/SPD_media_admin.js",)) })
    return super(ArticleAdmin,self).render_change_form(request=request, context=context, add=add, change=change, form_url=form_url, obj=obj)

这适用于 Django 1.4。感兴趣的读者可能需要调整 argskwargs 以匹配方法规范。 context 通常不会作为 kwarg 传递给此方法,否则我认为可以在不明确列出 args 的情况下对其进行编辑。希望这对 OP 或后代有所帮助。

https://stackoverflow.com/questions/5724084/

相关文章:

WPF - TextBlock 文本 + 超链接

.net - "Statement is not valid in a namespace"错误信息

regex - 正则表达式和 sed 从数百个文件中删除某些字符串的所有出现

file - 使用 cURL 检查文件是否存在于 FTPS 站点上

performance - C# 和 C++ 可以互操作高性能代码吗?

.net - 转义中间字符串百分号,正则表达式是最好的选择吗?

php - 尝试在 php 中为在线商店实现促销代码框

sql-server - SQL 服务器 : select without order

python - 始终返回数组的 numpy 切片

math - 需要给定排名和底池金额的奖品奖励功能