2010-09-01 97 views
9

我已经添加filter horizontalDjango Admin + Filter Horizo​​ntal?

filter_horizontal = ('blocked_email_notifications',) 

要我ModelAdmin,但它仍然呈现它作为一个多选择小部件,而不是漂亮的JavaScript的增强版本。怎么来的?我需要添加其他东西吗?

用户模型它定义为

blocked_email_notifications = ManyToManyField('EmailTemplate', blank=True) 

而且形式有它定义为

blocked_email_notifications = ModelMultipleChoiceField(queryset=EmailTemplate.objects.order_by('key'), required=False) 

回答

19

如果你在表单定义字段你需要包括小部件:

from django.contrib.admin.widgets import FilteredSelectMultiple 

blocked_email_notifications = ModelMultipleChoiceField(
    queryset=EmailTemplate.objects.order_by('key'), 
    required=False, 
    widget=FilteredSelectMultiple(
     verbose_name=EmailTemplate._meta.verbose_name, 
     is_stacked=False)) 

is_stacked

  • False:列表并排
  • 呈现侧
  • True:列表呈现一个其他
+6

下只想补充答案,你将需要通过FilteredSelectMultiple的一个实例(verbose_name ,堆叠)而不是类,所以最新版本的Django不会抱怨。 – 2012-08-17 21:00:43

+0

希望这也有帮助http://blog.jayapal.in/2009/08/reuse-django-admin-filteredselectmultip.html – xtreak 2016-03-14 06:29:38