那里
我正在使用django-python。
我有自定义的用户模型。我已经创建了一个单独的django信号文件。这是我的方法。
我正在我的apps.py中导入它们,并想在那里使用。
因为,迁移后的信号是这样工作的。但post_save是取模的不同原因。而postmigrate则使用app-name。
您可以更好地理解以下代码。
信号.py
import secrets
from django.core.mail import send_mail
def create_first_account(sender, **kwargs):
if sender.name == 'accounts':
user = User.objects.get_user_by_username("meidan")
if user:
return None
password = secrets.token_hex(4)
user = User.objects.create(
username="meidan",
email="[email protected]",
password=password
)
user.is_active= True
User.objects.save_me(user)
subject = 'Meidan Account'
message = password
from_email = settings.EMAIL_HOST_USER
recipient_list = ['[email protected]']
send_mail(subject, message, from_email, recipient_list, fail_silently=False)
def create_first_account(sender,created, **kwargs):
if sender.name == 'accounts':
print(created)
apps.py
from django.apps import AppConfig
from django.db.models.signals import post_migrate,post_save
from django.contrib.auth import get_user_model
User = get_user_model()
class AccountsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'accounts'
def ready(self):
from accounts.signals import generate_banks,create_first_account,create_first_account
post_migrate.connect(generate_banks, sender=self)
post_migrate.connect(create_first_account, sender=self)
post_save.connect(create_first_account,sender=User)
现在出现错误。
File "/home/aa/playapp-backend/envMy/lib/python3.10/site-packages/django/apps/registry.py", line 201, in get_model
self.check_apps_ready()
File "/home/aa/playapp-backend/envMy/lib/python3.10/site-packages/django/apps/registry.py", line 136, in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.