39

我将稍微简化一下情况。假设我有一个名为 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.

我应该如何进行?

4

1 回答 1

79

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

管理员.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;
}

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

于 2013-04-15T12:10:51.480 回答