不同的ManyToManyField小部件

时间:2009-04-19 12:00:29

标签: django django-models django-forms

当选择框中有很多内容时,很难使用默认的django 1.0.2 ManyToManyField小部件(多选)。是否有另一个小部件可用于在textarea中以逗号分隔的id列表?如果这不可用,我需要做什么才能编写一个,并将它显示在ModelForm.as_p()和管理站点中?

3 个答案:

答案 0 :(得分:2)

如果没有现成的小工具可以做你想要的(而且我认为没有),那么你需要自己编写。不幸的是,Django文档没有向您展示如何执行此操作,但通过查看复制现有窗口小部件并修改它的源代码forms/widgets.py并不难理解。

答案 1 :(得分:2)

我认为在manytomanyfield上设置raw_id_fields实际上会输出一个带有逗号分隔的id列表的TextInput小部件。 您可以在相应的ModelForm中的admin.py中覆盖它,并在其上强制使用TextArea小部件。

答案 2 :(得分:1)

在管理员中,您可以使用过滤水平和/或过滤垂直

class MyModelAdmin(admin.ModelAdmin):
    filter_horizontal = ['many_to_many_field_name']
    filter_horizontal = ['another_many_to_many_field_name']

doc