2013-09-26 49 views
0

因此,在我的Dishes表(成分,框)中的许多字段的管理界面中,当我使用下面的代码时,表单元素是一个可搜索的框,其中包含相关的整个查询集模型,并让我将选择移动到右侧选定对象的姐妹箱。我这样做,在admin.py以Django的形式显示可搜索的ManyToMany字段

class Dishes(admin.ModelAdmin): 
    ... 
    filter_horizontal = ('ingredients', 'boxes',) 

我试图复制在我的前端形式的用户看到相同的行为下面的代码,这是我forms.py代码

class RecipesForm(ModelForm): 
class Meta: 
    model = models.Dishes 

但我得到的只是一个简单的多选框。如何复制我在管理员中做过的操作,其中左侧有一个可搜索框,右侧是我从左侧选择的对象?

回答

1

您只需设置两个领域的管理部件:

from django.contrib.admin.widgets import FilteredSelectMultiple 

class RecipesForm(ModelForm): 
    class Meta: 
     model = models.Dishes 
     widgets = { 
      'ingredients': FilteredSelectMultiple('Ingredients', False), 
      'boxes': FilteredSelectMultiple('Boxes', False) 
     } 

还需要添加管理员静态文件(CSS,JS)用于微适当地工作,请参考以下链接了解详细信息:

http://jayapal-d.blogspot.com/2009/08/reuse-django-admin-filteredselectmultip.html

+0

我得到以下错误指向的代码行上面“成分”,异常类型开始:\t类型错误 异常值:\t __init __()至少需要3个参数(给出1个参数) –