在 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
求助!!
我有一个在我的项目中使用的自定义用户模型。当我的新用户注册时,我会使用信号为他们创建一个钱包。
@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