Редактор модели администратора Django: поле не отображается серым цветом, если не установлено другое логическое поле

#django #django-admin

#django #django-admin

Вопрос:

В моей модели у меня есть следующие два поля Treatment :

 is_followup = models.BooleanField()
parent_treatment = models.ForeignKey('self', blank=True, null=True,
                                     on_delete=models.CASCADE)
  

На снимке экрана ниже с моей страницы администратора я бы хотел выделить «Родительское лечение» серым цветом, если is followup не отмечен. Возможно ли это? и если да, то как это сделать?

Скриншот Django-страница администратора

Ответ №1:

Вы должны сделать это в JavaScript.

Этот фрагмент кода может вам помочь:

 django.jQuery(function($) {
    'use strict';

    var $isFollowup = $('#id_is_followup');
    
    function toggleCheckbox() {
        $('#id_parent_treatment').prop('disabled', !$isFollowup.prop('checked'));
    }

    $isFollowup.on('change', toggleCheckbox);
    toggleCheckbox();
});
  

Не забудьте обратиться к этому фрагменту JavaScript от вашего Model-Admin, используя:

 class TreatmentAdmin(admin.ModelAdmin):
    ...
    Media:
        js = ['my-project/treatment-admin.js']