我正在尝试创建一个继承自django User的自定义User类。问题是我已经有一些用户在数据库中无法删除,而且我还有另一个类(让他们说报告)有一个外键给用户。我的问题是:有没有办法创建我的新User类并保留旧数据?
提前谢谢。
答案 0 :(得分:1)
您可以创建链接回User
的相关模型。如果您有不同类型的用户,这是一种常见的方法,但也有其他用例。
class SpecialUserProfile(models.Model):
user = models.OneToOneField(User, null=True, blank=True, on_delete=models.SET_NULL)
special_feature = models.CharField(max_length=100, null=True, blank=True)
etc.
当新用户添加到User
时,您还需要创建此配置文件。您可以使用post_save
信号执行此操作。
@receiver(post_save, sender=User)
def create_special_user_profile(sender, instance, created, **kwargs):
if created:
SpecialUserProfile.objects.create(user=instance)
您可以使用command为现有用户创建配置文件,或者为User
中的现有用户编写并运行临时功能。
现在您可以使用user.specialuserprofile.special_feature
意义上的ORM。
这样你就可以继续使用User
模型作为基础,它不会破坏内置的用户相关功能,不会考虑新旧用户,你可以使用这个新模型有关用户的任何其他信息。