【问题标题】:Adding a jQuery script to the Django admin interface将 jQuery 脚本添加到 Django 管理界面
【发布时间】:2013-04-07 12:57:55
【问题描述】:

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

from django.db import models

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

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

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

我应该如何进行?

【问题讨论】:

    标签: jquery python django admin


    【解决方案1】:

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

    admin.py

    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;
    }
    

    为了解决您的问题,我会extend the admin。您可以将 js 事件添加到任何 DOM 节点,以触发 myscript 文件中的 ajax 调用到正确的管理视图进行处理。

    【讨论】:

    • 这可能已经改变,因为它是一个老问题,但是从 Django 1.8.1 开始,css 被指定为字典,键是目标媒体,值是上面的路径元组.使用逗号分隔来定位多种媒体,如果不是特定的,则使用“全部”。
    • (function($){ // your code })(django.jQuery);
    • 更好更短django.jQuery(function($) { // stuff })
    猜你喜欢
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 2019-01-29
    • 2023-03-30
    • 1970-01-01
    • 2012-08-14
    相关资源
    最近更新 更多