【问题标题】: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);