2014-10-01 106 views
3

我有模式:Django管理員。上改變選擇字段隱藏場

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

在管理頁面中我有selectField與選擇:「值1」,「值2」,「值3」,... 當我選擇「值2」我需要顯示verified字段。我該怎麼做?

+0

您可以通過[重寫管理模板(HTTPS做:/ /docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-admin-templates) – stalk 2014-10-01 10:41:39

回答

6

您需要添加一些JavaScript才能顯示或隱藏該字段。 jQuery 1.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);