Сброс поля на странице администратора Django
Представьте себе, что у меня есть модель и в админской форме Django я могу обновлять свои поля. Я хочу реализовать что-то вроде: обновить одно поле, а второе будет сброшено в форме администратора в реальном времени (я буду надеяться, что это поможет реальному администратору в будущем не забыть переопределить это второе поле, потому что оно очень важно в моей ситуации). Возможно ли реализовать что-то подобное без пользовательской формы администратора?
Чтобы достичь этого без пользовательского шаблона или формы, вы можете просто включить пользовательский скрипт, например:
Предположим, что у вас есть приложение с именем people и у него есть модель Person с двумя полями first_name и last_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 будет очищаться. Эта идея может быть расширена для выполнения более интересных вещей.