Django 管理页面中的重置字段

Reset field in Django Admin page

想象一下,我有模型并且可以在 Django 管理表单中更新我的字段。我想实现类似的东西:更新一个字段,第二个字段将在管理表单中实时重置(我希望它能在未来帮助真正的管理员不要忘记重新定义第二个字段,因为它在我的工作中非常重要情况)。是否可以在没有自定义管理表单的情况下实现类似的功能?

要在没有自定义模板或表单的情况下实现这一点,您可以只包含一个自定义脚本,例如:

假设您有一个名为 people 的应用,它有一个名为 Person 的模型,其中包含两个字段 first_namelast_name:

将 javascript 包含到管理页面

# people/admin.py

from django.contrib import admin
from people.models import Person

class PersonAdmin(admin.ModelAdmin):
    class Media:
        js = ('people/js/person.js',)

admin.site.register(Person, PersonAdmin)

然后创建 person/js/person.js 脚本:

'use strict';

//execute when everything is loaded
window.addEventListener('load', () => {
    let first_field = document.querySelector('form input[name=first_name]'); //field name
    let second_field = document.querySelector('form input[name=last_name]'); //field name

    //just when the fields are found (add or update)
    if(first_field && second_field) {
        //here you can implement whatever logic you want
        first_field.addEventListener('input', () => {
            second_field.value = '';
        });
    }
});

现在每次 first_name 更改 last_name 都会被清除。这个想法可以扩展到做更多有趣的事情。