python - 如何将自定义 javascript 添加到 django-xadmin?

标签 python django django-templates django-admin

对于 Django 的 stock(开箱即用) 管理,添加自定义 JavaScript 非常简单/容易:

class ContentAdmin(admin.ModelAdmin):
    model = Content

    class Media:
        js = ('js/content.js',)

在 Django 1.8.4 中运行良好(已测试)。

现在我正在使用 django-xadmin在我的项目中用于增强用户界面/体验。问题是上面的代码没有将自定义 JS 添加到 xadmin 的 View 中。

查看了项目的自述文件、“文档”(或缺少文档),甚至深入研究了源代码。我得到的最远的是弄清楚重写 get_media() 方法它实际上将自定义 JS 添加到 View 中,但由于它重写 父调用所有其他 xadmin 的 JS 和 CSS未加载。

class ContentAdmin(admin.ModelAdmin):
    model = Content

    class Media:
        js = ('js/content.js',)

    def get_media(self):
        # Tried "super(ContentAdmin, self).get_media()"
        ## » Says method doesn't exists
        # Tried "super(ContentAdmin, self).media"
        ## » Exactly the same thing as "self.media" below
        media = self.media
        print("#### MEDIA IS {}".format(media.__dict__))
        return media

打印出来:

#### MEDIA IS {'_css': {}, '_js': ['/static/admin/js/core.js', '/static/admin/js/admin/RelatedObjectLookups.js', '/static/admin/js/jquery.js', '/static/admin/js/jquery.init.js', '/static/admin/js/actions.js', 'js/content.js']}

我的自定义 JS ('js/content.js') 确实存在并已加载,但所有其他默认 xadmin 的 CSS 和 JS 都消失了。

关于如何在不覆盖父媒体属性的情况下添加自定义 JS 的任何想法?或者如何在覆盖时保留它?

最佳答案

看起来您没有正确使用 django-xadmin 的管理界面。

使用 django-xadmin,你的管理对象不应该继承自 django 的 admin.ModelAdmin,只是 object。当您在应用程序的 adminx.py 模块中执行 xadmin.site.register(model,admin_class) 时,django-xadmin 会根据插件动态生成(并缓存)实际类和网址模式。

您的 adminx.py 应该类似于:

import xadmin
from .models import Content

class ContentAdmin(object):

    def get_media(self):
        # media is the parent's return value (modified by any plugins)
        media = super(ContentAdmin,self).get_media()
        media.add_js(('js/content.js',))
        return media

 xadmin.site.regsiter(Content,ContentAdmin)

关于python - 如何将自定义 javascript 添加到 django-xadmin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35772623/

相关文章:

django - 根据先前选择的元素过滤Django表单选择元素

python - django:解析自定义模板中的变量

python - 在django模板中减去两个变量

python - (staticfiles.W004)Django中STATICFILES_DIRS设置中的目录不存在错误

python - 在 db 中保存二进制对象时,django-debug-toolbar 会崩溃。有解决方法吗?

python - Django 代码更改未反射(reflect)在生产服务器上

python - Django Firebase

python - 在 SIGNAL 之后继续使用 gdb 中的 python 脚本

python - 无法使用以下 python 代码保存文件。错误 : numpy. ndarray 对象没有属性 'save'

python - sre_constants.error : nothing to repeat