【问题标题】:Django admin. Hide field on change select fieldDjango 管理员。在更改选择字段上隐藏字段
【发布时间】:2014-11-26 03:59:18
【问题描述】:

我有模特:

class CategoryField(models.Model):
    selectfield = models.IntegerField(choices=SELECT_FIELD_CHOICES, default=1)
    verified = models.BooleanField(default=True, verbose_name='Required?')

在管理页面我有selectField 有选择:“value1”,“value2”,“value3”,... 当我选择“value2”时,我需要显示verified 字段。我该怎么做?

【问题讨论】:

标签: python django django-models django-admin


【解决方案1】:

您需要添加一些 JavaScript 才能显示或隐藏该字段。 jQuery 1.9.1 是 available in Django admin 已经通过 django.jQuery 对象。

添加此 JavaScript 的最简单方法是将 Media 元类添加到您的模型表单并将表单添加到 ModelAdmin

# forms.py

from django import forms

class CategoryFieldForm(forms.ModelForm):
    . . .

    class Media:
        js = ('category-field-admin.js',)


# admin.py

from django.contrib import admin

from your_app.forms import CategoryFieldForm
from your_app.models import CategoryField


class CategoryFieldAdmin(admin.ModelAdmin):
    form = CategoryFieldForm


admin.site.register(CategoryField, CategoryFieldAdmin)


# category-field-admin.js

// pseudo code - change as needed

(function($) {
    $(function() {
        var selectField = $('#id_selectField'),
            verified = $('#id_verified');

        function toggleVerified(value) {
            value == 'value2' ? verified.show() : verified.hide();
        }

        // show/hide on load based on pervious value of selectField
        toggleVerified(selectField.val());

        // show/hide on change
        selectField.change(function() {
            toggleVerified($(this).val());
        });
    });
})(django.jQuery);

【讨论】:

    最近更新 更多