我的 Django 信号在哪里寻找在 createprofile 函数中创建的缺失参数?
Where does my django signals look for a missing argument Created in the createprofile function?
我正在使用 django 信号在创建用户后创建配置文件,但我收到此 wird 错误,提示创建配置文件函数缺少创建的参数我什至在没有装饰器的情况下尝试过,但它没有用。我不知道我错过了什么。
这是模型和信号本身。
class Profile(models.Model):
user = models.OneToOneField(
User, verbose_name="user", related_name="profile", on_delete=models.CASCADE
)
full_name = models.CharField(max_length=150, blank=True, null=True)
date_of_birth = models.DateField(blank=True, null=True)
bio = models.TextField()
location = models.CharField(max_length=100, blank=True, null=True)
picture = models.ImageField(
default="media/profile_pics/default.jpg", upload_to="media/profile_pics"
)
date_created = models.DateTimeField(default=timezone.now)
date_updated = models.DateTimeField(auto_now=True)
def __str__(self):
return f"{self.user.username}'s profile"
@receiver(pre_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(pre_save, sender=User)
def create_profile(sender, instance, **kwargs):
instance.profile.save()
我正在使用 django allauth 进行身份验证和授权。
这是来自终端的错误
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\allauth\account\adapter.py", line 246, in save_user
user.save()
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\contrib\auth\base_user.py", line 67, in save
super().save(*args, **kwargs)
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\db\models\base.py", line 726, in save
self.save_base(using=using, force_insert=force_insert,
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\db\models\base.py", line 750, in save_base
pre_save.send(
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\dispatch\dispatcher.py", line 180, in send
return [
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\dispatch\dispatcher.py", line 181, in <listcomp>
(receiver, receiver(signal=self, sender=sender, **named))
TypeError: create_profile() missing 1 required positional argument: 'created'
[09/Jul/2021 18:54:00] "POST /accounts/signup/ HTTP/1.1" 500 136997
post_save
信号就是您要查找的信号。
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
我正在使用 django 信号在创建用户后创建配置文件,但我收到此 wird 错误,提示创建配置文件函数缺少创建的参数我什至在没有装饰器的情况下尝试过,但它没有用。我不知道我错过了什么。
这是模型和信号本身。
class Profile(models.Model):
user = models.OneToOneField(
User, verbose_name="user", related_name="profile", on_delete=models.CASCADE
)
full_name = models.CharField(max_length=150, blank=True, null=True)
date_of_birth = models.DateField(blank=True, null=True)
bio = models.TextField()
location = models.CharField(max_length=100, blank=True, null=True)
picture = models.ImageField(
default="media/profile_pics/default.jpg", upload_to="media/profile_pics"
)
date_created = models.DateTimeField(default=timezone.now)
date_updated = models.DateTimeField(auto_now=True)
def __str__(self):
return f"{self.user.username}'s profile"
@receiver(pre_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(pre_save, sender=User)
def create_profile(sender, instance, **kwargs):
instance.profile.save()
我正在使用 django allauth 进行身份验证和授权。
这是来自终端的错误
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\allauth\account\adapter.py", line 246, in save_user
user.save()
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\contrib\auth\base_user.py", line 67, in save
super().save(*args, **kwargs)
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\db\models\base.py", line 726, in save
self.save_base(using=using, force_insert=force_insert,
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\db\models\base.py", line 750, in save_base
pre_save.send(
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\dispatch\dispatcher.py", line 180, in send
return [
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\dispatch\dispatcher.py", line 181, in <listcomp>
(receiver, receiver(signal=self, sender=sender, **named))
TypeError: create_profile() missing 1 required positional argument: 'created'
[09/Jul/2021 18:54:00] "POST /accounts/signup/ HTTP/1.1" 500 136997
post_save
信号就是您要查找的信号。
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)