Как создать определенный профиль на основе атрибута пользователя в Django, используя сигналы - PullRequest
0 голосов
/ 24 января 2019

У меня есть пользователи, которые являются либо «Компания», либо «Заявитель», каждый из которых имеет разные атрибуты.Я хочу создать профиль компании или профиль кандидата при регистрации на основе атрибута пользователя.

Ниже приведен код, который я использую в signal.py, и он не работает.

@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
        if created:
            if sender != User.is_company:
                Applicant.objects.create(user=instance)
            else:
                Company.objects.create(user=instance)


@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
    if instance.is_applicant:
        instance.applicant.save()
    else:
        instance.company.save()

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Замените это:

if sender != User.is_company:

На это:

if instance.is_company:

Пользователь - это имя класса, а экземпляр - его объект.

0 голосов
/ 24 января 2019

Обязательно импортируйте сигналы в свои apps.py

#my_app/apps.py

from django.apps import AppConfig


class MyAppConfig(AppConfig):
    name = 'My App'

    def ready(self):
        import my_app.signals

и чем в signals.py

#my_app/signals.py

@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
    if instance.is_applicant:
        Applicant.objects.create(user=instance)
    else:
        Company.objects.create(user=instance)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...