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

Pao*_*olo 1 media django modeladmin django-admin

要在Django admin中封装自定义功能,我提供了一个自定义的ModelAdmin类,实际上看起来像这样:

class ArticleAdmin(admin.ModelAdmin):
    class Media:
        js = ("my_code.js",)
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

six*_*rls 5

不知道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)
Run Code Online (Sandbox Code Playgroud)

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