调整django admin默认权限

时间:2014-12-08 07:50:27

标签: python django django-admin

我不知道这是否可能,但这就是我想要实现的目标。

django admin中有三个默认权限。添加/改变/删除。

我想要的是像" view"许可,有点像"改变"许可,但没有编辑能力。

我有一个国家/地区模型,在创建客户端时,需要选择一个国家/地区作为其外键。

但如果我将此字段设置为只读,则无法按我的意愿选择国家/地区。所以我必须给用户"更改"权限,以便在用户创建客户信息时该国家/地区可用。

给予"改变"许可是好的,但如果它有一个"视图"会更好。权限。

我做了很多搜索,并没有找到完美的"溶液

我认为必定会有很多人也想要这个许可。

那么如何制作这个自定义"查看"权限并顺利与django admin集成。

1 个答案:

答案 0 :(得分:0)

我希望这会对你有所帮助:

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权限,他将设置国家/地区字段一次(创建时)

相关问题