Сброс поля на странице администратора 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 будет очищаться. Эта идея может быть расширена для выполнения более интересных вещей.

Вернуться на верх