【问题标题】:Django1.5 not overwriting auth_usersDjango1.5 不覆盖 auth_users
【发布时间】:2013-07-12 09:43:31
【问题描述】:

我想要一个更大的 auth_user 表,包括 2-3 个额外字段。

问题是下面的代码正在创建一个新的,与带有额外字段的 auth_user 完全相同,但它没有替换它。

settings.py

AUTH_PROFILE_MODULE = "myaccount.MyUser"

models.py

from django.contrib.auth.models import AbstractUser

    class MyUser(AbstractUser):
    gender = models.DateField()
    location = models.CharField(max_length=30)
    birthday = models.CharField(max_length=30)

而不是创建一个名为myaccount_MyUser 的新表。如何替换当前的auth_user而不是创建新表?

【问题讨论】:

    标签: python database django django-1.5


    【解决方案1】:

    我认为你必须这样做

    import first django.contrib.auth.models 
    import AbstractUser 
    

    在你的models.py 之前获得使用AbstractUser 扩展的方法。它应该与它一起工作

    【讨论】:

    • 我已经把它导入了,尽管我没有在这里写。否则它会显示一个错误。
    • 好的,尝试同时导入 AbstractBaseUser、PermissionsMixin,因为 AbstractUser 扩展了这两者。这样你就可以弄清楚到底发生了什么。
    • 两个都导入了,结果一样。
    • 检查关于 MIDDLEWARE_CLASSES = ('django.contrib.auth.middleware.AuthenticationMiddleware',) INSTALLED_APPS = ('django.contrib.auth',) 的设置文件
    • 好的,让我尝试一下,如果我找到解决方案,请回复您。
    【解决方案2】:

    【讨论】:

    • 很高兴您能帮助提问者。但是,在某些情况下,只留下一个链接的答案可能是有害的。虽然你现在的答案很好,但如果链接死了,你的答案就会失去它的价值。因此,如果您在答案中总结文章中的内容,将会很有帮助。请参阅this 问题以获得澄清。
    【解决方案3】:

    我没有尝试也不推荐的一种骇人听闻的方法是在模型中指定表名:

    class MyUser(AbstractUser):
        class Meta:
            db_table = auth_user
    

    我建议使用新表并使用南数据迁移从旧表迁移数据。以下是有关如何执行此操作的详细答案:

    Migrating existing auth.User data to new Django 1.5 custom user model?

    【讨论】:

    • 从 0 开始创建比迁移它更好(当不需要时)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 2019-04-20
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多