我不知道这是否可能,但这就是我想要实现的目标。
django admin中有三个默认权限。添加/改变/删除。
我想要的是像" view"许可,有点像"改变"许可,但没有编辑能力。
我有一个国家/地区模型,在创建客户端时,需要选择一个国家/地区作为其外键。
但如果我将此字段设置为只读,则无法按我的意愿选择国家/地区。所以我必须给用户"更改"权限,以便在用户创建客户信息时该国家/地区可用。
给予"改变"许可是好的,但如果它有一个"视图"会更好。权限。
我做了很多搜索,并没有找到完美的"溶液
我认为必定会有很多人也想要这个许可。
那么如何制作这个自定义"查看"权限并顺利与django admin集成。
答案 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权限,他将设置国家/地区字段一次(创建时)