考虑到Django 1.0.2 admin的功能实在太弱了,今天冒着大风险,将某系统的Django进行了升级(升级至Django 1.2.7)。
Django 1.2.7 admin在使用ManyToManyField
的时候,默认使用垂直filter_vertical
方式进行显示与选择。此方式在选项比较多的时候,难以直观的看出哪些选项被选中,如下图所示:
决定使用更直观的方式,filter_horizontal
,设置比较简单,只要在admin.py
里对应的模块下,添加类似如下内容即可:
filter_horizontal = ['example']
filter_horizontal
显示方式如下图所示:
但是,当我设置了此选择后,发现出现了奇怪的问题,如下图:
没有报错,但也没有出现设想中的选择框。经过研究,发现,原来是因为我对应的字段ips
,在models.py
里定义的时候,verbose_name
使用了字符串,而不是unicode
,如下:
ips = models.ManyToManyField( IPData, verbose_name = "使用IP" )
调整为
ips = models.ManyToManyField( IPData, verbose_name = u"使用IP" )
问题解决。使用string
是因为我们这些是一些老旧的系统,新项目必须果断的抛弃string
,拥抱unicode
吧!
您可能还喜欢以下文章
- pip 升级 pip 失败
- Django multiple select option with title
- 可能是全网最全的 ulimit 配置说明了
- pelican增加自定义jinja template filters
- 美区 Apple ID 充值攻略
相关评论
comments powered by Disqus