Django admin的filter_horizontal(和filter_vertical)无法工作

9 投票
3 回答
16163 浏览
提问于 2025-04-15 22:23

我正在尝试在ManyToMany字段中使用ModelAdmin.filter_horizontal和ModelAdmin.filter_vertical,而不是使用多选框,但我得到的结果是:

我的模型:


class Title(models.Model):
    #...
    production_companies = models.ManyToManyField(Company, verbose_name="компании-производители")
    #...

我的管理界面:


class TitleAdmin(admin.ModelAdmin):
    prepopulated_fields = {"slug": ("original_name",)}
    filter_horizontal = ("production_companies",)
    radio_fields = {"state": admin.HORIZONTAL}
    #...

JavaScript加载得很好,我真的不明白发生了什么。Django 1.1.1稳定版。

3 个回答

0

另一个可能导致 filter_horizontal 无法正常工作的原因是覆盖了 form.media 属性,这个属性包含了这个小工具所需的JavaScript文件。

0

我也在找这样的答案。刚刚发现'filter_horizontal'的值必须是一个列表或者元组。

所以这段代码:

filter_horizontal = ("production_companies",)

应该改成:

filter_horizontal = ("production_companies", "production_companies")
14

我终于找到了问题的解决办法。问题出在字段的名字上——它用的是 str 类型,而不是 unicode 类型。换成 unicode 类型后就解决了。

谢谢 :-)

撰写回答