调整django管理员默认权限
问题描述:
我不知道这是否可能,但这里是我想实现的。调整django管理员默认权限
django admin有三种默认权限。添加/更改/删除。
我想要的就像是“查看”权限,有点像“更改”权限,但没有编辑权限。
我有一个国家模式,当客户端被创建时,它需要选择一个国家,因为它是外键。
但是,如果我将此字段设置为只读,它将无法按我的意愿选择国家/地区。因此,我必须授予用户“更改”权限,以便用户创建客户端信息时该国家将可用。
给予“更改”权限没有问题,但如果它具有“查看”权限会更好。
我做了很多搜索,没有找到“完美”的解决方案。
我认为肯定会有很多人想要这个权限。
那么如何让这个自定义的“查看”权限与django管理员顺利集成。
答
我希望这将帮助你:
class Client(models.Model):
name = models.CharField(...)
readonlyfield = models.CharField(...)
country = models.ForeignKey(...)
class Meta:
permissions = (
("change_country", "Can change country"),
)
class ClientAdmin(admin.ModelAdmin):
fields = ['name', 'readonlyfield', 'country']
def get_readonly_fields(self, request, obj=None):
if obj and not request.user.has_perm('yourapp.change_country'):
return['readonlyfield', 'country']
else:
return['readonlyfield']
因此,如果用户不具有change_country许可,他会一次(在创建)
并设置乡间田野?那究竟是什么问题? – 2014-12-08 08:14:02
如何使这样的“查看”权限。 – castiel 2014-12-08 08:20:45
https://docs.djangoproject.com/en/1.7/topics/auth/customizing/#custom-permissions和https://docs.djangoproject.com/en/1.7/topics/auth/default/#programmatically-creating -permissions。您可能必须重写ModelAdmins中的几个方法。 – 2014-12-08 08:26:20