小宅今天专门花了一下午去优化admin,鉴于本人还有一丝强迫症,所以一切的一切,都得想要弄好弄舒服(bushi
但是今天在给继承了AbstractUser的自定义用户表配置user_permissions时,就遇到了一个比较令人抓狂的问题
最开始的配置和效果是这样的:
views.py
from django.contrib.auth.models import AbstractUser, Permission
from simplepro.components import fields
...
class User(AbstractUser):
...
user_permissions = fields.TransferField(
Permission,
verbose_name="用户权限",
blank=True,
titles=['待选', '已选'],button_texts=['退回', '给予'],
related_name="user_set",
related_query_name="user",
)
...
效果
emmmm...这谁看得清哪个是哪个权限啊喂QAQ
在进行一波StackOverflow的逛之后,简而言之就是重新写一下Permisson的__str__,最后达到自己想要的效果:
views.py
from django.contrib.auth.models import AbstractUser, Permission
from simplepro.components import fields
...
def transPermissionName(name):
trans = [
("Can view","查看"),
("Can add","添加"),
("Can change","修改"),
("Can delete","删除")
]
for o,t in trans:
name = name.replace(o,t)
return name.replace(' ','')
Permission.__str__ = lambda self: '%s' % (transPermissionName(self.name))
class User(AbstractUser):
...
user_permissions = fields.TransferField(
Permission,
verbose_name="用户权限",
blank=True,
titles=['待选', '已选'],button_texts=['退回', '给予'],
related_name="user_set",
related_query_name="user",
)
...
关于这个transPermissionName函数,大家可以自己去写,反正我是为了业务需求随便写写了~ 最终效果:
大功告成!!