您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在幕后,将用户分类和创建一对一字段有什么区别?

在幕后,将用户分类和创建一对一字段有什么区别?

您的第一个示例是多表继承

class Profile(User):

如果有profile,则可以直接访问用户模型上的所有字段(例如profile.usernameprofile.email)。在这种情况下,Django会OneToOneField自动为您创建一个

第二个例子是常规的OneToOneField

class Profile(models.Model):
    user = models.OneToOneField(User)

在这种情况下,您将无法访问profile.usernameprofile.email。相反,您可以通过一对一字段(例如profile.user.usernameprofile.user.email)访问这些字段 。

在您的情况下,如果要添加配置文件模型,则应避免使用继承,而应使用一对一字段。该User模型具有自定义管理员来处理密码。如果您使用多表继承,那么您的Profile模型也必须处理这个问题。通过使用一对一字段,定制管理员可以处理用户字段,而您的Profile模型管理员只需处理其他配置文件字段。

另一种选择是创建自定义用户模型在这种情况下,您可以继承一个抽象类,AbstractUser或者AbstractBaseUser代替该类User。如果您的Profile类有效,那么我建议您使用它而不是自定义用户模型,因为自定义用户模型的设置更为复杂。

其他 2022/1/1 18:39:51 有363人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶