kam*_*aou 4 python django signals django-custom-user
请帮助 !!
我有一个在项目中使用的自定义用户模型。当新用户注册时,我通过使用信号为他们创建一个钱包。
@receiver(post_save, sender=User)
def create_saving_wallet(sender, instance, **kwargs):
[...]
Run Code Online (Sandbox Code Playgroud)
在函数中,我正在做一些基本的事情,比如
wallet = Wallet(user_id=user_id, wallet_type=wallet_type, amout=amount)
wallet.save()
Run Code Online (Sandbox Code Playgroud)
而且,我在app.py这个类中发送信号:
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")
Run Code Online (Sandbox Code Playgroud)
当我们使用注册表时,一切正常,但如果我们使用管理站点登录,则会调用信号,然后更新旧钱包。
我该怎么做才能避免这种行为?
当调用我的自定义用户的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
Run Code Online (Sandbox Code Playgroud)