为了在 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。感兴趣的读者可能需要调整 args
和 kwargs
以匹配方法规范。 context
通常不会作为 kwarg
传递给此方法,否则我认为可以在不明确列出 args
的情况下对其进行编辑。希望这对 OP 或后代有所帮助。
https://stackoverflow.com/questions/5724084/