状況を少し簡略化します。 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 adminインターフェイスを介してデータベースに新しいラボを追加します。追加ボタンをクリックすると、2つのフィールドがある空のフォームが表示されます。 acronym
フィールドにABCD
などの値を手動で入力すると、query
フィールドに同じ値、つまりABCD
が自動的に入力されます。
どうすればいいですか?
メディアを管理者に追加するには、管理者クラスのメタクラスメディアにメディアを追加するだけです。例:
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)
タプルである必要があるため、ファイルが1つしかない場合は、末尾のコンマに注意してください。この方法でcssをオプトインすることもできます。
管理者にはすでに(古いバージョンの)jqueryが含まれています。これを使用するためにショートカットするには、これを「myscript」ファイルの先頭に追加します。
if (!$) {
$ = Django.jQuery;
}
あなたの問題を解決するために、私は adminを拡張する にします。任意のDOMノードにjsイベントを追加して、myscriptファイルでajax呼び出しをトリガーし、処理するための適切な管理ビューを表示できます。