能够自动创建具有预定义权限的少数组(包括django.contrib.auth.signals
自动创建的权限)。
显然有两种方法可以做到这一点:
使用第一个选项的问题是:
add_
,delete_
,change_
)。 - "pk"
字段,并且已经创建了一些权限。使用第二个选项的问题是:
django.contrib.auth.signals
)之前运行,因此您无法调用其预定义权限并将其添加到您的群组中。不仅如此,还有一个简单的:
def create_initial_groups(**kwargs):
staff_group = Group(name = 'Staff')
clients_group = Group(name = 'Clients')
staff_group.save()
clients_group.save()
和
signals.post_syncdb.connect(
create_initial_groups,
dispatch_uid = 'unique_app_identifier.listeners.create_initial_groups'
)
我得到了:
django.db.utils.IntegrityError:重复键值违反唯一 约束" auth_group_name_key"细节:钥匙(姓名)=(工作人员)已经 存在。
即使使用干净的数据库(在drop schema public cascade; create schema public;
之前psql
上运行python manage.py syncdb
)。
那么,用最少的组和权限预填充数据库的最简洁方法是什么?如果有的话?
答案 0 :(得分:1)
如果您可以将这些自定义权限与模型相关联,请尝试在permissions attribute inside model's Meta类下定义它们。
为自定义组创建灯具,但在序列化时使用natural keys,以便他们按名称而不是pk引用相关权限。