3

このモデルを想像してみましょう:

class ScribPart(models.Model):
  name = models.CharField(max_length=50, unique=True)
  text = models.TextField()

特定のクラスをフィールドにアタッチし、text特定の js ファイルを呼び出したいです。管理ページは次のようになります。

...
<script type="text/javascript" src="/static/js/mymarkup.js"></script>
...
<textarea id="id_text" name="text" class="mymarkup"></textarea>
...

ウィジェットやカスタム管理フォームでそれを行うにはどうすればよいですか?

4

3 に答える 3

5

管理ページにを挿入する<script>最も簡単な方法は次のとおりです。

class ScribPartAdmin(model.ModelAdmin):
    ...
    your normal stuff...
    ...

    class Media:
        js = ('/path/to/your/file.js',)

ModelAdminメディア定義ドキュメント

classここで属性を追加するtextarea最も簡単な方法は次のようになります。

from django import forms

class ScribPartAdmin(model.ModelAdmin):
    ...
    your normal stuff...
    ...

    class Meta:
        widgets = {'text': forms.Textarea(attrs={'class': 'mymarkup'})}

デフォルトのウィジェットのドキュメントを上書きする

このアプローチは、ワンショットでの使用に適していることを付け加えておきます。フィールドまたはJSを何度も再利用する場合は、より良い方法があります(フィールドのカスタムウィジェット、JSがフィールドに排他的に関連している場合はJSファイルを指定し、テンプレートを拡張して多くの場所にJSファイルを含める) 。

于 2011-08-11T18:23:08.893 に答える
1

テンプレートを作成し、templates / admin/change_form_scribpart.htmlに次のコンテンツとともに配置する必要があります。

{% extends "admin/change_form.html" %}
{% load i18n %}

{% block content %}
    <script type="text/javascript" src="/static/js/mymarkup.js"></script>
    {{ block.super }}
{% endblock %}

また、ScribPartModelAdminでこの新しい管理者テンプレートをアクティブ化することを忘れないでください。

class ScribPartAdmin(admin.ModelAdmin):   
    ordering = ...
    fieldsets = ...
    change_form_template = "admin/change_form_scribpart.html"
于 2011-08-11T14:43:24.100 に答える
0

json pack でフォームを送信し、このコードで get(check) できます

results = ScribPart.all()
    for r in results :

        if r.test == id_text:
            self.response.out.write("<script type='text/javascript' src='/static/js/"+r.name+"mymarkup.js'></script>")
于 2011-08-11T14:45:03.507 に答える