我想通过一对一字段将Profile
模型关系添加到现有的User
模型中。但是我在数据库中已经有几个用户。如何在迁移新模型的同时创建这些默认关系?
例如,我已经在数据库中创建了两个用户Foo和Bar,在迁移Profile
模型之后,这两个用户都应该有一个关联的Profile
。
型号
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(verbose_name="Email Address", max_length=255, unique=True)
first_name = models.CharField(max_length=255)
surname = models.CharField(max_length=255)
is_active = models.BooleanField(default=True)
staff = models.BooleanField(default=False)
admin = models.BooleanField(default=False)
objects = UserManager()
USERNAME_FIELD = "email"
REQUIRED_FIELDS = ["first_name", "surname"]
def get_full_name(self):
return f"{self.first_name} {self.surname}"
def __str__(self):
return self.email
def is_staff(self):
return self.staff
def is_admin(self):
return self.admin
### New model I want to create
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
avatar = models.ImageField(default="gravatar.jpg", upload_to="avatars/")
username = models.CharField(max_length=255, blank=True)
phone = models.CharField(max_length=15, blank=True)
def __str__(self):
return f"{self.user.first_name}'s profile"
1条答案
按热度按时间zpjtge221#
在新创建的迁移文件中,只需包含一个
RunPython
脚本,该脚本将为现有用户创建相关的Profile
对象:在此处了解有关迁移中的自定义脚本的详细信息