仅当复选框为false时,django admin才显示字段

Chr*_*s P 6 django django-admin

models.py

class Menu(models.Model):

    ...
    has_submenu=models.BooleanField(default=1)
    page=models.ForeignKey(Page,null=True)
Run Code Online (Sandbox Code Playgroud)

我想django admin只有当has_submenu复选框为false时才显示页面属性(所以django-admin必须为我写一些javascript :))

也许我必须扩展这个render_change_form方法

有什么建议?

Chr*_*s P 13

我的答案:

class MenuAdmin(admin.ModelAdmin):
    # ...
    class Media:
        js = ('/static/admin/js/hide_attribute.js',)
Run Code Online (Sandbox Code Playgroud)

hide_attribute.js

hide_page=false;
django.jQuery(document).ready(function(){
    if (django.jQuery('#id_has_submenu').is(':checked')) {
        django.jQuery(".page").hide();
        hide_page=true;
    } else {
        django.jQuery(".page").show();
        hide_page=false;
    }
    django.jQuery("#id_has_submenu").click(function(){
        hide_page=!hide_page;
        if (hide_page) {
            django.jQuery(".page").hide();
        } else {
            django.jQuery(".page").show();
        }
    })
})
Run Code Online (Sandbox Code Playgroud)

我认为这是一个简单的答案