0

我正在使用 django 注册。我创建了一个名为“Statistics”的类,它与 User 类的每个实例都有一对一的关系。

每次通过 /accounts/register 页面创建新用户时,我希望能够创建“统计”类的新实例并将其与刚刚创建的用户相关联。

我的问题是,我应该在哪里编写代码才能做到这一点?每次创建新用户时我应该将要执行的代码放在哪里?类似于以下内容:

s = Statisics ( comments = 0, thanked = 0, user = UserThatWasJustCreated)

谢谢。

4

2 回答 2

3

正如 Josh 所指出的,您应该将代码附加到信号上,但如果您需要运行代码,即使在django-registration 之外创建时,我也会考虑将其附加到Django 的post_save信号上。User

在这种情况下,它应该是这样的:

from django.db.models.signals import post_save
from django.contrib.auth.models import User

def create_statistic(sender, *args, **kwargs):
    if kwargs.get('created'):
        s = Statisics( comments=0, thanked=0, user=kwargs['instance'])

post_save.connect(create_statistics, sender=User)

您可以将该代码放在Statistics模型定义之后。

于 2012-12-18T20:36:38.103 回答
1

查看 Django-Registration 提供的自定义信号:http: //docs.b-list.org/django-registration/0.8/signals.html。我认为其中之一将为您完成这项工作。

于 2012-12-18T19:21:44.370 回答