Django создать профиль для сигнала пользователя - PullRequest
0 голосов
/ 03 мая 2020

я пытаюсь создать профиль для учетной записи пользователя с помощью сигналов, но после написания кодов вообще не создаю

Django 3.0.5

users / models.py

from django.db import models
from django.contrib.auth.models import User
from PIL import Image


class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    profile_image = models.ImageField(default='default.jpg', upload_to='profile_pics')

    def __str__(self):
        return f'{self.user.username} Profile'

    def save(self):
        super().save()

        img = Image.open(self.profile_image.path)

        if img.height > 300 or img.width > 300:
            output_size = (300, 300)
            img.thumbnail(output_size)
            img.save(self.profile_image.path)

users / signal.py

from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import Profile


@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)


@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.profile.save()

users / apps.py

from django.apps import AppConfig


class UsersConfig(AppConfig):
    name = 'users'

    def ready(self):
        import users.signals

Я проверяю все опции на inte rnet, но не могу заставить это работать, Может ли кто-нибудь помочь, может быть, я что-то упустил в моих кодах

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'users',
    'courses',
    'crispy_forms',

]

я могу увидеть это сообщение в apps.py:

Не используется оператор импорта 'import users.signals'

и в signal.py: Значение параметра "отправитель" не используется

Параметр '** значение kwargs не используется

Использование PyCharm Proffesional

1 Ответ

0 голосов
/ 04 мая 2020

Заменить

INSTALLED_APPS = [
   ...
   'users',
   ...
]

на

INSTALLED_APPS = [
   ...
   'users.apps.UsersConfig',
   ...
]

Если вы не укажете путь для класса конфигурации приложения, Django будет использовать базовый, как упомянуто в документации https://docs.djangoproject.com/en/3.0/ref/applications/. Таким образом, ваша конфигурация не использовалась, что привело к тому, что файл сигналов не был импортирован во время регистрации приложения, и, как следствие, сигналы не были зарегистрированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...