Django сигналы не работают, несмотря на то, что все на месте - PullRequest
0 голосов
/ 15 марта 2020

Мой случай
В моем случае Пользователь - это пользовательская модель по умолчанию django, и я создал профиль для добавления дополнительной информации к модели пользователя.
Для достижения
Теперь я хочу, чтобы при создании нового пользователя автоматически создавался профиль для этого пользователя.
Я сделал
1. Я проверил свой signal.py, а также импортировал сигналы в файл apps.py, но все равно nw Профиль не создается для каждого создаваемого нового пользователя :(
2. Попытка добавления 'users.apps.UsersConfig' в мой INSTALLED_APPS, и это не тоже не получается.
Код ниже
Я указал код в моих файлах signal.py и apps.py ниже. Пожалуйста, спросите меня, нужен ли вам еще какой-нибудь код, и спасибо в advance:)

Вот мой файл signal.py

#This is the signal that will be sent
from django.db.models.signals import post_save

#This is the object which will send the signal
from django.contrib.auth.models import User

#This will receive the signal
from django.dispatch import receiver

#We need this to perform operations on profiles table
from .models import Profile

#This function creates new profile for each user created
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)

#This function saves those newly created profiles
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
    instance.profile.save()

Вот мой файл apps.py

from django.apps import AppConfig
class UsersConfig(AppConfig):
    name = 'users'

    def ready(self):
        import users.signals


Вот мой INSTALLED_APPS

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
 #Custom Apps
'product',
'shop',
'market',
'pages',
'users',
]

1 Ответ

0 голосов
/ 16 марта 2020

Я использовал 'users' в INSTALLED_APPS вместо 'users.apps.UsersConfig'.
Мой новый рабочий INSTALLED_APPS выглядит так:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#Custom Apps
'product',
'shop',
'market',
'pages',
'users.apps.UsersConfig', #Signals wont work if you just write 'users'
]


Или просто обратитесь к похожему вопрос:
{ ссылка }

...