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

最新更新