如何通过javascript从管理页面检索Django模型ID

was*_*asd 1 javascript python django django-admin reactjs

假设我有一个像这样的 Django 模型。

class Car(models.Model):
    speed = models.IntegerField()
    color = models.CharField(max_length=120)

Run Code Online (Sandbox Code Playgroud)

我通过管理员在管理员中注册了它

admin.site.register(Car)
Run Code Online (Sandbox Code Playgroud)

我想为管理站点对象视图添加自定义 JS 按钮,它将警告汽车模型实例的颜色值。所以当我按下它时,我会得到类似“ID 为13的汽车是红色的”这样的信息

如何通过 JavaScript 获取对象的 id 和颜色字段的值?

paw*_*ina 5

您必须change_form.html为您的应用扩展模板(https://docs.djangoproject.com/en/2.2/ref/contrib/admin/#overriding-vs-replacing-an-admin-template

例如我有store应用程序,里面models.py我已经放了Car模型。

然后在里面store/templates/admin/store/change_form.html我放了这个模板:

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

{% block content %}
{{ block.super }}
        <script>
                const object = {
                        pk: {{ original.pk }},
                        color: '{{ original.color }}',
                };
        </script>
{% endblock %}

{% block object-tools-items %}
{{ block.super }}

<li>
        <a href="" id="my-button">My button</a>
        <script>
                const button = document.getElementById('my-button');
                button.addEventListener('click', function() {
                        alert(`The car with ${object.pk} is ${object.color}`); 
                });
        </script>
</li>

{% endblock %}
Run Code Online (Sandbox Code Playgroud)

管理员视图:

在此处输入图片说明