首页 > 解决方案 > Django Admin 模型编辑器:如果未选中另一个布尔字段,则字段灰显

问题描述

我的Treatment模型中有以下两个字段:

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

在我的管理页面下方的屏幕抓取中,如果未选中后续操作,我想将“家长治疗”设为灰色。这可能吗?如果是这样,该怎么做?

屏幕截图 Django-admin 页面

标签: djangodjango-admin

解决方案


你必须在 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();
});

不要忘记从你的 Model-Admin 引用这个 JavaScript 片段,使用:

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

推荐阅读