class CandidateAdmin(admin.ModelAdmin): formfield_overrides = { models.TextField: {'widget': Textarea(attrs={'rows': 4, 'cols': 40})}, } list_display = ('id', 'first_name', 'last_name', 'current_company', 'title', 'gender', 'country', 'status', 'consultant', 'mobile_number', 'civil_reg_number', 'added_date') list_display_links = ('id', 'first_name', 'last_name') list_filter = ('consultant', 'status', 'gender', 'country', 'city') form = CandidateForm advanced_search_form = AdvancedSearchForm() other_search_fields = {} search_fields = ['first_name', 'last_name', 'civil_reg_number', 'status', 'cvmn', 'cven', 'address', 'mobile_number', 'notes'] actions = [recruited_by_scc] def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'consultant': kwargs['initial'] = Consultant.objects.get(user=request.user) return db_field.formfield(**kwargs) return super(CandidateAdmin, self).\ formfield_for_foreignkey(db_field, request, **kwargs) def changelist_view(self, request, extra_context=None, **kwargs): extra_context = {'asf':self.advanced_search_form} request.POST._mutable=True post_keys = [] search_keys = [] for key in request.POST.keys(): value=request.POST.get(key) if value!='' and key!='csrfmiddlewaretoken': post_keys.append(key) for key in self.other_search_fields.keys(): value = [x for x in self.other_search_fields.get(key) if x!=''] if value: search_keys.append(key) if post_keys!=search_keys and len(post_keys)>0 and len(search_keys)>0: self.other_search_fields = {} for key in self.advanced_search_form.fields.keys(): try: temp = request.POST.pop(key) except KeyError: pass else: if temp!=['']: self.other_search_fields[key] = temp request.session[request.user.username] = self.other_search_fields self.other_search_fields = {} request.POST._mutable=False return super(CandidateAdmin, self).changelist_view(request, extra_context=extra_context) def queryset(self, request): qs = super(CandidateAdmin, self).queryset(request) search_query = []
admin / search_form.html
{% load i18n grp_tags %} {% if cl.search_fields %} {% if asf %} <form action="" method="POST"> {% csrf_token %} {{asf}} <input type="submit" value="search" /> </form> {% else %} <form id="grp-changelist-search" action="" method="get"> <input type="text" name="{{ search_var }}" id="grp-changelist-search" class="grp-search-field" value="{{ cl.query }}" /> <button type="submit" value="" class="grp-search-button"></button> {% for pair in cl.params.items %} {% ifnotequal pair.0 search_var %}<input type="hidden" name="{{ pair.0 }}" value="{{ pair.1 }}"/>{% endifnotequal %} {% endfor %} </form> {% endif %} {% endif %}