参考URL:

http://www.hoboes.com/Mimsy/hacks/replicating-djangos-admin/reusing-djangos-filter_horizontal/

http://www.hoboes.com/Mimsy/hacks/replicating-djangos-admin/

我要想的东东,没有上面讲的那么复杂,就是想在用户操作M2M时,可以从容的选择不同的选项,而不用担心哪些东东被漏了。

按上面的文档,我的实现如下:

一,新建一个模板文档,将相关的DJANGO管理里的CSS,JS移出来备用。

popupplus.html(注意初始化的参数,0为横向,1为纵向)

{% load staticfiles %}
<link rel="stylesheet" href={% static "admin/css/widgets.css"%} />
<script src={% static "/admin/jsi18n/"%}></script>
<script src={% static "admin/js/core.js"%}></script>
<script src={% static "admin/js/SelectBox.js"%}></script>
<script src={% static "admin/js/SelectFilter2.js"%}></script>

{% if multiple %}
<script type="text/javascript">
addEvent(window, "load", function(e) {
SelectFilter.init("id_{{ field }}", "{{ field }}", 0, "/static/admin/");
});
</script>
{% endif %}

二,重写forms.py里的代码,让其继承forms.SelectMultiple来改写:

class MultipleSelectWithPop(forms.SelectMultiple):
    def render(self, name, *args, **kwargs):
        html = super(MultipleSelectWithPop, self).render(name, *args, **kwargs)
        popupplus = render_to_string("rightmanage/popupplus.html", {'field': name, 'multiple': True})
        return html+popupplus

三,让相关字段继承这个类,来实现横向选择。

class RightManageFATForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(RightManageFATForm, self).__init__(*args, **kwargs)

    fat_users = forms.ModelMultipleChoiceField(
        User.objects,
        widget=MultipleSelectWithPop,
    )

    name = forms.CharField(
        required=False,
        error_messages={'required': "不能为空"},
        label=u"项目名称",
        widget=forms.TextInput(
            attrs={
                'class': 'uk-width-1-4',
                'disabled': 'true',
            }
        ),
    )

    class Meta:
        model = Site
        fields = ['name', 'fat_users', ]
        exclude = ['app_name', 'description', 'app_name', 'manage_user', 'uat_users', 'prd_users', 'valid_users', ]

四,然后,,好像就抽定啦。。。:)好像字体没调好,暂时不管。。。

将DJANGO管理界面的filter_horizontal移到前面来复用的更多相关文章

  1. iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建

    iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建 一.实现效果 说明:该示例在storyboard中使用动态单元格来完成. 二.实现 1.项目文件结构 ...

  2. C#_会员管理系统:开发二(会员资料管理界面的‘增删改查’)

    会员资料管理界面: 新建一个窗体,窗体界面和控件如下: 窗体中的控件dgvManager更改FullRowSelect属性(点击选中效果)为:FullRowSelect 会员资料管理界面窗体的详细代码 ...

  3. 8 django 里面的API

    1.什么是API? 2.在djang里面写API 3.API实战效果 1.移动端的网页 4.restframework :老师方法 (0)安装 Django REST framework 是一个强大且 ...

  4. Django里面的RequestContext

    c = RequestContext(request, { 'foo': 'bar', }) get_template('about.html').render(c) 当我们定义一个RequestCo ...

  5. 通过Eclipse3.1以上启动Tomcat访问不到tomcat管理界面的问题(转载)

    通过Eclipse插件启动Tomcat的问题 默认分类   2009-10-23 15:54   阅读118   评论0   字号: 大  中  小 目前在通过Eclipse中插件启动Tomcat时遇 ...

  6. Solr 05 - Solr Web管理界面的基本使用

    目录 1 Dashboard - 仪表盘 2 Logging - 日志信息 3 CoreAdmin - Solr核心 4 Java Properties - Java参数 5 Thread Dump ...

  7. kafka-manager:kafak的管理界面的安装和使用

    下载打包 release下载:https://github.com/yahoo/kafka-manager/releases 源码位置:https://github.com/yahoo/kafka-m ...

  8. 【Rocket MQ】RocketMQ 在windows7 64位安装使用 +RocketMQ管理界面的安装

    参考地址:https://blog.csdn.net/yucaifu1989/article/details/80960018 参考地址:https://blog.csdn.net/u01204090 ...

  9. Win7系统打开服务管理界面的几种方法汇总

    转自:https://www.jb51.net/os/windows/318465.html Win7服务管理包含了计算机操作系统和应用程序提供的所有服务,但是这么多服务并非总是用户所需的.比如打印机 ...

随机推荐

  1. 3月7日 Maximum Subarray

    间隔2天,继续开始写LeetCodeOj. 原题: Maximum Subarray 其实这题很早就看了,也知道怎么做,在<编程珠玑>中有提到,求最大连续子序列,其实只需要O(n)的复杂度 ...

  2. 【风马一族_Android】android的新发现

    Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW");这一段句话.可以调用出系统 ...

  3. FPGA使用技巧

    1 IOB       为了保证FPGA输入输出接口的时序,一般会要求将输入管脚首先打一拍再使用,输出接口也要打一拍再输出FPGA.将信号打一拍的方法是将信号通过一次寄存器,而且必须在IOB里面的寄存 ...

  4. 百度编辑器(Ueditor)最新版(1.4.3.3)插入锚点失败原因分析及BUG修复

    用百度编辑器——Ueditor(版本1.4.3.3,2016-05-18日上线)插入锚点的时候,每次总是失败,百思不得其解.通过分析Ueditor的代码ueditor.all.js,可以看出Uedit ...

  5. 了解jsonp

    <script>                //创建全局函数,用来处理 跨域 获取到的信息:        function name(data){            ....   ...

  6. PHP实现根据浏览器跳转不同语言页面代码

    以下是对使用PHP实现根据浏览器跳转不同语言页面的代码进行了介绍,需要的朋友可以过来参考下 代码: <?php /** * 根据不同浏览器跳转不同页面 * 来源:www.jbxue.com * ...

  7. Ubuntu下PHP开发配置(新增redis、sphinx、sqlserver相关配置)

    由于本人比较懒,所以一般都是用xampp的直接拿来改的…………(当然xampp中一般php版本都是比较新的用的过程中请大家注意哈,可能会和老版本冲突) 此次除了使用xampp外,还扩展了sphinx, ...

  8. Linux之父访谈录:设计内核只为了好玩

    2010-09-20 10:36 “有 些人生来就具有统率百万人的领袖风范;另一些人则是为写出颠覆世界的软件而生.唯一一个能同时做到这两 者的人,就是Linus Torvalds.”这是美国<时 ...

  9. 用户登录密码RSA加密后传输的实现,非明文密码传输

    在用户登录页面,用户输入密码后,在传送到服务器端时,为防止在密码传送过程中,被如360这种东东给拦截到, 需要在传送前对密码进行加密,然后再传送! 利用RSA加密,在客户端使用公钥对密码进行加密,在服 ...

  10. ORA-00054

    系统版本: [root@yoon ~]# more /etc/oracle-releaseOracle Linux Server release 5.7 数据库版本: Oracle Database ...