0

在我的数据库中,我想同步两个表。我使用 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) 
4

1 回答 1

2

您可以修改 django 注册代码并将代码包含在每次新注册时保存到您的配置文件模型中。

或者

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

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)

每次保存任何用户对象时都会调用 create_profile()。在此示例中,我仅在创建了新的 User 实例时才创建 Profile 对象。您也可以修改它以在用户实例的每次更改时更改现有的配置文件对象。

于 2013-08-07T09:53:46.310 回答