如何在Django中同步表?

时间:2013-08-07 09:46:35

标签: database django django-models django-forms

在我的数据库中,我想同步两个表。我使用auth_user(Django提供的默认表)表进行注册,还有另一个表用户配置文件,其中包含实体用户名,电子邮件,年龄等。如何根据auth_user表中的更新自动更新用户配置文件中的列用户名和电子邮件。

from django.contrib.auth.models import User

class profile(models.Model):
    username = models.CharField(max_length = 30)
    email  = models.EmailField()
    age = models.PositiveIntegerField()
    auth_user_id = models.ForeignKey(User) 

1 个答案:

答案 0 :(得分:1)

您可以修改django注册码,并在每次新注册时包含要保存到个人资料模型中的代码。

或者

您可以在每次保存用户模型时设置信号。请参阅documentation

def create_profile(sender, **kwargs):
    if kwargs["created"]:
        p = Profile(user=kwargs["instance"], ...)
        p.save()
django.db.models.signals.post_save.connect(create_profile, sender=User)
每次保存任何User对象时都会调用

create_profile()。 在此示例中,仅在创建了新的User实例时才创建Profile对象。您也可以修改它以在User实例中的每次更改时更改现有的Profile对象。