在 Django 中自定义用户注册的信号

signal for custom user registration in django

求助!!

我有一个在我的项目中使用的自定义用户模型。当我的新用户注册时,我会使用信号为他们创建一个钱包。

@receiver(post_save, sender=User)
def create_saving_wallet(sender, instance, **kwargs):
    [...]

在函数中,我正在做一些基本的事情,比如

wallet = Wallet(user_id=user_id, wallet_type=wallet_type, amout=amount)
wallet.save()

而且,我在 app.py 这个 class 发送信号 :

from django.apps import AppConfig
from django.core.signals import request_finished


class MyAppConfig(AppConfig):

    def ready(self):
        from wallet import views
        # Explicitly connect a signal handler.
        request_finished.connect(views.create_saving_wallet, dispatch_uid="azerty123")

当我们使用注册表时一切正常,但如果我们使用管理站点登录,则会调用信号,然后更新旧钱包。

我该如何避免这种行为?

当我的自定义用户的 save() 方法被调用时,信号应该被调用。我不确定,但是因为我有这个错误,这是否意味着当用户登录时,会调用 save() 方法?

post_save信号仅在save()方法结束时发送

试试这个注意,在 post_save 中有一个参数 created 将很有用 created has two values(True and False).True is when the User is first created

@receiver(post_save, sender=User)
def create_saving_wallet(sender,instance,created,*args,**kwargs):
    if created:
       # add your code here