首页 > 解决方案 > 信号好像不行,老实说试了很多

问题描述

为网站创建用户模型身份验证,使用信号自动创建但似乎没有被触发,创建了困惑的用户,但不是个人资料这次有人可以帮助我吗

模型.py

class InterestChoice(models.Model):
    INTEREST_CHOICES = (
        ('A', 'traveling'),
        ('B', 'exercise'),
    )
    interest = models.CharField(max_length=1, choices=INTEREST_CHOICES, unique=True)

    def __str__(self):
        return self.get_interest_display()


class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)
    dob = models.DateField()
    image = models.ImageField(default='default.jpg', upload_to='profile_pics')
    GENDER_CHOICES = (
        ('M', 'Male'),
        ('F', 'Female'),
    )
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES, null=True)
    interests = models.ManyToManyField(InterestChoice)

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

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

信号.py

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


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


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

这是apps.py 代码apps.py

from django.apps import AppConfig


class UsersConfig(AppConfig):
    name = 'users'

    def ready(self):
        import users.signals

标签: django

解决方案


推荐阅读