让我们想象一下这个模型:
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>
...
如何使用窗口小部件和/或自定义管理表单执行此操作?
答案 0 :(得分:5)
要在管理页面中插入<script>
,最简单的方法是:
class ScribPartAdmin(model.ModelAdmin):
...
your normal stuff...
...
class Media:
js = ('/path/to/your/file.js',)
ModelAdmin media definitions documentation
现在要将class
属性添加到textarea
我认为最简单的方法就是这样:
from django import forms
class ScribPartAdmin(model.ModelAdmin):
...
your normal stuff...
...
class Meta:
widgets = {'text': forms.Textarea(attrs={'class': 'mymarkup'})}
Overriding the default widgets documentation
我应该补充一点,这种方法适合一次性使用。如果你想多次重用你的字段或JS,那么有更好的方法(字段的自定义小部件,如果JS与字段完全相关,则指定JS文件,扩展模板以在许多地方包含JS文件)
答案 1 :(得分: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 %}
另外,不要忘记在ScribPart ModelAdmin中激活这个新的管理模板:
class ScribPartAdmin(admin.ModelAdmin):
ordering = ...
fieldsets = ...
change_form_template = "admin/change_form_scribpart.html"
答案 2 :(得分:0)
您可以使用json pack发送表单并使用此代码获取(选中)
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>")