我不知道这是否可能,但这就是我想要实现的目标。
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权限,他将设置一次国家/地区字段(在创建时)