在github上使用django-custom-user app,如何获得刚创建电子邮件地址的当前用户

时间:2013-09-25 07:00:43

标签: django django-1.5

我在github上使用django-custom-user app:https://github.com/recreatic/django-custom-user

我有一个定义的信号:

@receiver(post_save, sender=EmailUser)
def user_saved(sender=None, **kwargs):
    print("Request finished!")
    user = kwargs["instance"]
    if kwargs["created"]:
        blah = Blah(user=get_user_model(), name="None")
        blah.save()

现在我收到错误:无法分配“”:“Blah.user”必须是“EmailUser”实例。 这个错误是有道理的,因为在github描述中它表示要获取特定的电子邮件地址:

user = get_user_model().get(email="user@example.com")

我的问题是......鉴于这种情况,我如何才能获得刚刚创建的用户?这不像是我刚刚登录的用户的电子邮件地址?我是通过django admin btw做的。这与视图中的同义词一样,您可以使用request.user。但我假设我现在不能这样做。

有人可以解释信号中这些回调中的参数吗?这个回调函数有一个任意名称user_saved,但它以某种方式获得参数“sender”和“kwargs”。它们来自哪里,哪里可以找到这些回调的参数列表?

1 个答案:

答案 0 :(得分:1)

而不是:

blah = Blah(user=get_user_model(), name="None")

只需使用:

blah = Blah(user=kwargs["instance"], name="None")

那是因为Blah()需要一个实例,而不是类模型。

信号接收器总是有sender作为第一个参数,然后是signals documentation中解释的许多变量参数(这就是需要*kwargs的原因)。可以在post-save documentation

中找到post-save参数列表