Django管理员。更改时隐藏字段选择字段

2024-09-30 14:38:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有型号:

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字段。我该怎么做?在


Tags: defaultfieldmodelmodelsselectclasschoicesverified
1条回答
网友
1楼 · 发布于 2024-09-30 14:38:42

您需要添加一些JavaScript来显示或隐藏字段。jQuery1.9.1已经通过django.jQuery对象available in Django admin。在

添加此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);

相关问题 更多 >