- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
以下是我在定义身份验证模型的包中的 signals.py 文件中的代码。
@receiver(post_migrate, sender=settings.AUTH_USER_MODEL)
def define_groups(sender, **kwargs):
# Create groups
Group.objects.get_or_create(name='Promoter')
Group.objects.get_or_create(name='Client')
Group.objects.get_or_create(name='Superuser')
Group.objects.get_or_create(name='Staff')
文档 ( https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#referencing-the-user-model ) 声明它应该设置为
sender=settings.AUTH_USER_MODEL
虽然这仅适用于文档示例中提到的 post_save。
我已经尝试过 get_user_model() 并且还直接使用了 my_custom_user.models。
get_user_model() 返回错误,而将模型设置为发件人工作正常,因为 -
from . import models
@receiver(post_syncdb, sender=models)
def define_groups(sender, **kwargs):
# Create groups
Group.objects.get_or_create(name='Promoter')
Group.objects.get_or_create(name='Client')
Group.objects.get_or_create(name='Superuser')
Group.objects.get_or_create(name='Staff')
但根据文档,这不是引用自定义用户模型的正确方法,只是一种丑陋的解决方法。
有人能帮我解决这个问题,这样我就可以在第一次迁移用户模型时添加这些组。
谢谢
编辑:使用 get_user_model() 返回以下错误 -
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
最佳答案
post_migrate
的发送者
方法永远不是模型(自定义或其他),它是已安装应用的 AppConfig
实例。
文档给出了以下示例,用于在 ready
方法中连接信号处理程序。
from django.apps import AppConfig
from django.db.models.signals import post_migrate
def my_callback(sender, **kwargs):
# Your specific logic here
pass
class MyAppConfig(AppConfig):
...
def ready(self):
post_migrate.connect(my_callback, sender=self)
同样,post_sync_db
信号(注意该信号已弃用)的发送方是包含已安装模型的模块。
关于python - 在 django 1.8 中,如何在设置自定义用户模型时为 post_migrate 和 post_syncdb 信号接收器设置发送方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31952425/
我有一个 myapp/management/__init__.py正在注册 post_syncdb像这样的处理程序: from django.db.models import signals from
我试图在创建表后立即添加一些数据到数据库中,使用 post_syncdb信号。 signals.post_syncdb.connect(init) 然后在init函数中,我想设置权限,所以我使用 ct
以下是我在定义身份验证模型的包中的 signals.py 文件中的代码。 @receiver(post_migrate, sender=settings.AUTH_USER_MODEL) def de
我是一名优秀的程序员,十分优秀!