Вот.
Я использую django python.
У меня есть собственная модель пользователя. Я создал отдельный файл сигналов django. вот мой метод.
Я импортирую их в свой файл apps.py и хочу использовать там.
потому что сигналы post_migrate работают именно так. но post_save - это другая причина, требующая модели. тогда как postmigrate работает с именем приложения.
Вам лучше понять следующий код.
signals.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="meidanpk@gmail.com",
password=password
)
user.is_active= True
User.objects.save_me(user)
subject = 'Meidan Account'
message = password
from_email = settings.EMAIL_HOST_USER
recipient_list = ['ahmedyasin1947@gmail.com']
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.
Подробнее здесь: https://stackoverflow.com/questions/784 ... in-apps-py