一尘不染

将jQuery脚本添加到Django管理界面

django

我将稍微简化一下情况。假设我有一个名为Lab的模型。

from django.db import models

class Lab(models.Model):
    acronym = models.CharField(max_length=20)
    query = models.TextField()

该字段query几乎总是与该字段相同acronym。因此,我希望在Django管理界面query中的acronym字段中输入文本后自动填写该字段。此任务必须由jQuery脚本执行。

因此,如果我举一个例子:你想通过Django管理界面向数据库添加一个新实验室。你单击添加按钮,你将进入带有两个字段的空白表格。你手动acronym使用诸如的值填写该字段,ABCD然后该query字段应自动以相同的值填写,即ABCD

我应该如何进行?


阅读 440

收藏
2020-04-02

共1个答案

一尘不染

要将媒体添加到管理员,你只需将其添加到你的管理员类的元类媒体,例如:

管理员

class FooAdmin(admin.ModelAdmin):
    # regular stuff
    class Media:
        js = (
            '//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', # jquery
            'js/myscript.js',       # project static folder
            'app/js/myscript.js',   # app static folder
        )

admin.site.register(Foo, FooAdmin)

如果只包含一个文件,请注意结尾的逗号,因为它必须是一个元组。你也可以以这种方式选择加入CSS。

管理员已经包含(较旧的版本)jquery。要将其快捷使用,请将其添加到“ myscript”文件的顶部:

if (!$) {
    $ = django.jQuery;
}

为了解决你的问题,我将扩展admin。你可以将js事件添加到任何DOM节点,以触发myscript文件中的ajax调用,以处理正确的admin视图。

2020-04-02