use*_*641 0 python django django-models django-admin
默认情况下,通过运行manage.py createsuperuser命令从项目目录可以创建超级用户,但是该.is_superuser标志是默认的django标志,用于区别超级用户或其他用户。
我不想使用它,因为我在整个应用程序中都使用该标志来显示设置菜单。相反,我在中添加了一个字段userprofile models,该字段为.is_primary_user。
有什么方法可以控制它,以便如果我运行createsuperuser注释,它应该.is_primary_user在userprofile模型中将字段更新为“ 1” ?
是的,有,您必须捕获User模型的post_save信号,如果.is_superuser更改了,还需要更改.is_primary_user。
Brian Neal指出,您不应在应用程序中使用.is_superuser标志。它旨在与Django权限系统(超级用户具有所有权限)和/或Django admin一起使用。
编辑:我还没有测试,但是应该是这样的:
from django.db.models.signals import pre_save
from django.contrib.auth import User
# method for updating
def update_primary_user(sender, instance, **kwargs):
if instance.pk:
return
if instance.is_superuser and not instance.userprofile.is_primary_user:
instance.userprofile.is_primary_user = True
instance.userprofile.save()
# register the signal
pre_save.connect(update_primary_user, sender=User)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4361 次 |
| 最近记录: |