admin.py:
...... from django import forms from django.contrib.admin.helpers import ActionForm from clever_selects.form_fields import ChainedChoiceField, ChoiceField from clever_selects.forms import ChainedChoicesForm from django.contrib import messages ............ class BatchActionForm(ActionForm): profile = ChoiceField(label=u'Profile', choices=[], required=False) location = ChainedChoiceField(empty_label=_(u'---- Choose ----'), parent_field='profile', ajax_url='/ajax/custom-chained-view-url/', required=False) batch = ChainedChoiceField(empty_label=_(u'---- Choose ----'), parent_field='location', ajax_url='/ajax/custom-chained-view-url2/', required=False) def __init__(self, *args, **kwargs): # I evaluate the profile field here, because when you add a profile # the list won't update unless you evaluate it here in __init__ p = Profile.objects.filter(profile_type=2) .values_list('id', 'name') p_list = [(None, u'---- Choose ----')] p_list.extend(p) super(BatchActionForm, self).__init__(*args, **kwargs) self.fields['profile'] = forms.ChoiceField(choices=p_list, label=u'Profile', required=False, widget=forms.Select(attrs={'id': 'id_profile'}))
To be continued…