V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dsdshcym
V2EX  ›  Django

django 如何创建 Group 和设置相应的 Permission

  •  
  •   dsdshcym ·
    dsdshcym · 2015-04-30 11:30:57 +08:00 · 4580 次点击
    这是一个创建于 3500 天前的主题,其中的信息可能已经有所发展或是发生改变。
    学校期中 PJ 要做一个选课系统,有学生、老师、教务员三个用户组。

    想通过 django 的 Group 给三个组分别设置权限,但是尝试了一个早上依然无果,不知道有什么资料吗?(官方 Doc 对这块的资料比较少,是比较少用这个功能么?)
    10 条回复    2015-05-01 10:18:04 +08:00
    maemual
        1
    maemual  
       2015-04-30 11:34:30 +08:00
    以『django group permission』怎么 google 到一堆资料呢。。。。
    dsdshcym
        2
    dsdshcym  
    OP
       2015-04-30 11:44:57 +08:00
    @maemual 是啊,但是我想在代码里设置好

    现在找到的最接近我想法的是这篇 http://garmoncheg.blogspot.com/2012/06/users-groups-and-their-permissions-in.html

    但是我不知道该把设置的代码放在哪里,放在 models.py 里会报错, views.py 里好像又没作用。
    dsdshcym
        3
    dsdshcym  
    OP
       2015-04-30 11:51:33 +08:00
    https://gist.github.com/85f9922de550e3df2190

    这是我用来设定 group 和 permission 的代码,放在 models.py 里会有 Duplicate entry 'Student Group' for key 'name' 错误
    maemual
        4
    maemual  
       2015-04-30 12:01:50 +08:00
    @dsdshcym 没有所谓的设置,你创建 group,然后 save,这是数据库存储,在数据库里有几张表,记录 group 和 permission 的
    maemual
        5
    maemual  
       2015-04-30 12:02:39 +08:00
    @dsdshcym Duplicate entry 'Student Group' for key 'name'
    这明显就是说数据库表里面的条目已经存在了嘛。
    dsdshcym
        6
    dsdshcym  
    OP
       2015-04-30 12:09:51 +08:00 via Android
    @maemual 所以,如果部署到服务器上之后所有 group 都要重新创建一次吗?

    感觉这样不科学。。。
    lds56
        7
    lds56  
       2015-05-01 09:35:25 +08:00
    出现 Duplicate 说明你要 truncate 掉原表,推荐 truncate 不要 drop
    lds56
        8
    lds56  
       2015-05-01 09:58:26 +08:00
    @dsdshcym 不然你的 group 哪里来,从石头里蹦出来么🐒。部署跟测试两码事。说来 models.py 应该就写表的定义而不是对表的操作,像你说的 group 这种表应该写在 init 部分,不过要注意的是每次测试时需要重新 truncate。
    lds56
        9
    lds56  
       2015-05-01 10:16:13 +08:00
    @dsdshcym 再补充一句。事实上这些表应该预设好,然后再通过单独的方式导入,而不是通过你的 runserver 命令。你可以在 admin 界面加,也可以用 dumpdata 或者 loaddata 命令。
    lds56
        10
    lds56  
       2015-05-01 10:18:04 +08:00
    另外 PJ 是什么👻?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3342 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:30 · PVG 19:30 · LAX 03:30 · JFK 06:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.