在服务器运行时通过django-admin添加自定义权限

时间:2015-09-02 11:13:51

标签: python django permissions django-admin

在Django-admin中,是否可以制作功能,以便管理员可以在服务器运行时通过django-admin创建/编辑/删除某些权限?

在django-admin中我希望可以列出权限,使用编辑创建和删除功能

使用模型类的Meta子类中的权限将通过迁移脚本创建自定义权限。 取自https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#custom-permissions

<string-array name="countries">
        <item> - من خارج فلسطين - </item>
        <item> أذربيجان </item>
        <item> أرمينيا </item>
        <item> أستراليا </item>
        <item> أفغانستان </item>
        <item> ألبانيا </item>
        <item> ألمانيا </item>
        <item> أنتيغوا </item>
...

这将在class Task(models.Model): ... class Meta: permissions = ( ("view_task", "Can see available tasks"), ("change_task_status", "Can change the status of tasks"), ("close_task", "Can remove a task by setting its status as closed"), ) (和auth_permission)上插入值 但这需要数据库迁移,这意味着不太可能由用户(管理员)而是开发人员完成。应用程序是否有必要在服务器运行时管理权限,创建,编辑和删除?我想知道人们如何让它在django上运作。

那么创建此功能的最佳做法是什么?或者我应该坚持使用migrate&amp;在每个模型中创建它们,因为python web框架行为是我们每次实现新功能时需要重新加载服务器的行为吗?三江源

2 个答案:

答案 0 :(得分:6)

您可以将Permission模型注册到管理员视图:

from django.contrib.auth.models import Permission
from django.contrib import admin
admin.site.register(Permission)

代码可以在任何地方执行,但是应用程序的admin.py可以是一个直观的位置。在此之后,您将能够查看,编辑和删除权限。

答案 1 :(得分:0)

您还需要进行 searchView?.isIconified = false searchView?.clearFocus() ,因为这将导致大量SQL查询

select_related