Хорошо, это мое решение с использованием вышеуказанных классов.
Я добавил еще несколько фильтров для правильной фильтрации, но я хотел, чтобы код читался здесь.
Это именно то, что я искал, и я нашел свое решение здесь: http://www.slideshare.net/lincolnloop/customizing-the-django-admin#stats-bottom (слайд 50)
Добавьте следующее в мой admin.py:
class CustomerForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CustomerForm, self).__init__(*args, **kwargs)
wtf = Category.objects.filter(pk=self.instance.cat_id);
w = self.fields['categories'].widget
choices = []
for choice in wtf:
choices.append((choice.id, choice.name))
w.choices = choices
class CustomerAdmin(admin.ModelAdmin):
list_per_page = 100
ordering = ['submit_date',] # didnt have this one in the example, sorry
search_fields = ['name', 'city',]
filter_horizontal = ('categories',)
form = CustomerForm
Это фильтрует список "категорий", не удаляя никакой функциональности! (то есть: у меня все еще может быть мой любимый фильтр_горизонтальный:))
ModelForms очень мощные, я немного удивлен, что это больше не рассматривается в документации / книге.