如何在南迁中访问 auth User 的 User.objects.create_user(...) ?

2024-04-25

我没有使用 django 的 auth 模块,而是使用了自己的模块,并且已经非常后悔了。

为了纠正这种情况,我正在尝试将数据从我的用户模型迁移到 django.auth.models.User。

我创建了一个数据迁移,如下所示:

def forwards(self, orm):
    """Migrate user information from mooi User model to auth User model."""

    OldUser = orm['mooi.User']
    User = orm['auth.User']
    Profile = orm['mooi.Profile']

    oldUsers = OldUser.objects.all()
    for oldUser in oldUsers:
        newUser = User.objects.create_user(username=oldUser.id, email=oldUser.email, password=oldUser.password)
        # ...more irrelevant code follows...

当我运行迁移时,出现此错误(回溯):

#...irrelevant traceback precedes...
File "[projdir]/mooi/migrations/0005_from_mooi_users_create_auth_users_with_profiles.py", line 18, in forwards
    newUser = User.objects.create_user(username=oldUser.id, email=oldUser.email, password=oldUser.password)
  File "[virtual_env_dir]lib/python2.6/site-packages/south/orm.py", line 397, in __getattr__
    return getattr(self.real, name)
AttributeError: 'Manager' object has no attribute 'create_user'

经过进一步调查,我发现Manager所提到的是时候了south.orm.NoDryRunManager这解释了错误。

现在,我什至需要的原因create_user是创建一个密码哈希django.contrib.auth会明白。

说了这么多,我该怎么做呢?考虑到我所处的洞,最优雅的解决方案是什么?

提前致谢。

Update 1

正如建议的史蒂夫贾林 https://stackoverflow.com/users/79225/stevejalim,我尝试使用User's set_password(...)如下:

newUser.set_password(raw_password=oldUser.password)
newUser.save()

但是,由于以下错误而失败:

File "[projdir]/mooi/migrations/0005_from_mooi_users_create_auth_users_with_profiles.py", line 21, in forwards
    newUser.set_password(raw_password=oldUser.password)
AttributeError: 'User' object has no attribute 'set_password'

我确实发现了一个提示南方文献 http://south.aeracode.org/docs/ormfreezing.html#rationale-behind-the-serialisation其中指出:

南方并没有冻结每一个方面 模型;例如,事实并非如此 保留新的管理器或自定义模型 方法,因为这些需要 序列化运行的Python代码 这些方法(以及代码 取决于,等等)。

如果您想在您的 移民,你必须复制 代码输入,包括任何导入 依靠工作。但请记住, 对于您添加的每个导入,您 承诺保持进口有效 为了生活,为了迁徙。

我想问题仍然存在,最好/最安全的方法是什么?复制set_password(...)方法结束?创建一个为我散列密码的函数?还有其他想法吗?


为什么你不直接导入你需要的东西?
我遇到了同样的问题,我所做的是:

from django.contrib.auth.hashers import make_password

class Migration(DataMigration):
    ...

    def forwards(self, orm):
        user = orm['auth.User'].objects....
        user.password = make_password('123')
        ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在南迁中访问 auth User 的 User.objects.create_user(...) ? 的相关文章

  • 没有名为 urllib.parse 的模块(我应该如何安装它?)

    我正在尝试在 CentOS 7 上运行 REST API 我读到 urllib parse is in Python 3 但我使用的是 Python 2 7 5 所以我不知道如何安装此模块 我安装了所有要求 但仍然无法运行该项目 当我寻找
  • NumPy 数组不可 JSON 序列化

    创建 NumPy 数组并将其保存为 Django 上下文变量后 加载网页时收到以下错误 array 0 239 479 717 952 1192 1432 1667 dtype int64 is not JSON serializable
  • 如何访问模板缓存? - 姜戈

    I am 缓存 HTML在几个模板内 例如 cache 900 stats stats endcache 我可以使用以下方式访问缓存吗低级图书馆 例如 html cache get stats 我确实需要对模板缓存进行一些细粒度的控制 有任
  • 如何在heroku上设置django-compressor,离线压缩到S3

    我遵循了在 SO 和不同博客中找到的每一条 QA 建议 在我的开发机器上一切正常 但在 Heroku 上没有任何效果 这是我的设置 DEFAULT FILE STORAGE arena utils MediaRootS3BotoStorag
  • 添加信号接收器后,Django 从头开始​​迁移失败:“没有这样的表”

    我在代码中添加了一些信号接收器 一切都工作正常 直到我将其推送到版本控制并且 CI CD 管道失败 在尝试迁移时 它会抱怨 django db utils OperationalError no such table badges badg
  • 自动将测试从 JUnit 3 迁移到 JUnit 4 的最佳方法?

    我有一堆 JUnit 3 类 它们扩展了 TestCase 并希望自动将它们迁移为带有注释的 JUnit4 测试 例如 Before After Test etc 有什么工具可以在大批量运行中执行此操作吗 在我看来 这并没有那么难 那么让我
  • 迁移范围的独特性

    我一直在尝试找到一种方法来实现这一目标 但我找不到任何尝试 即使如此 我想也许我的方法是完全错误的 也就是说 我应该做什么移民如果我希望两个字段的组合是唯一的 请注意 我不希望它们成为索引 而只是数据库字段 例如 对于下面的迁移 我可以单独
  • update_all_contenttypes 似乎不适用于 Django 1.8

    我在运行某个函数时收到以下错误 django contrib contenttypes models DoesNotExist ContentType matching query does not exist 根据post syncdb
  • 如何获取 Django Model Field 对象的值

    我使用了一个模型字段对象field object MyModel meta get field field name 如何获取字段对象的值 内容 Use value from object https docs djangoproject
  • 如何按外部值对 Django QuerySet 进行排序?

    我有一个由 id rank 对组成的字典 我想对 ids 执行 Django 查询 以便生成的查询集按排名 降序 排序 获取查询集很容易 rankings result MyModel objects filter id in rankin
  • Django:如何从管理界面调用管理自定义命令执行?

    参考 从代码执行管理命令 https stackoverflow com questions 907506 how can i call a custom django manage py command directly from a t
  • 如何向 tabularinline 块的每一行添加行号

    我有一个 ModelAdmin 类 其内联类型为 TabularInline 我希望 TabularInline 的每一行在其左侧显示一个行号 随着新记录添加到内联中 该数字会增加 并且会在编辑表单时显示 我更喜欢行号不是内联数据模型的一部
  • Django检查用户组权限

    我有一个名称 的自定义权限可以显示分发页面 代号 can show distribute page 内容类型 User 我添加两个组 名为 manager and normal 一个拥有所引用的许可 一个没有 如何判断用户是否有该权限 我尝
  • 如何在 Django 中获取 URL(带有协议和域)(无需请求)?

    我想在 cron 作业中发送邮件 邮件应包含 我的应用程序的链接 在 cron 作业中 我没有请求对象 并且无法使用 request build absolute uri 据我所知 网站框架可以在这里提供帮助 但没有给我协议 http vs
  • Django:什么时候运行 makemigrations?

    除了向模型添加 删除 修改字段之外 当我向模型添加或修改方法时 Django 还会检测到更改 所以我的问题是我应该跑步吗makemigrations每次我在模型中更改或添加新方法时 当您添加 更改模型方法时 您不需要运行 manage ma
  • 在 Django 中创建用户个人资料页面

    我是 Django 的初学者 我需要设置一个网站 其中每个用户都有一个个人资料页面 我见过 django 管理 用户的个人资料页面 应该存储一些只能由用户编辑的信息 谁能指出我这怎么可能 任何教程链接都会非常有帮助 另外 django 是否
  • Django 说端口已被使用

    当我运行 Django 时runserver命令显示端口已在使用中 所以每次我都需要杀死使用该端口的进程并再次运行服务器 谁能给我一个永久的解决方案 您可以使用另一个端口 因为可能是port您正在使用的有一些问题 python manage
  • 将 Django 模型映射到外部 API

    上下文 我有一个外部 API 提供数据并允许发布新数据或修补现有数据 API 响应示例 response requests get http api band 4 print response json id 4 name The Beat
  • 在 Ubuntu 11 上的 Apache 2 上使用 virtualenv 的多个 Django 应用程序

    我已经使用以下命令成功设置了一个 Django 应用程序virtualenv在 Ubuntu 和 Apache 2 上 使用WSGIPythonHome指令指向我的virtualenv地点 现在我需要创建一个单独的 Django 应用程序
  • 在 Django 查询中与父级一起获取子级数据

    我有两个模型产品和产品包 产品包有一个产品型号的外键 我如何访问包含产品包的所有产品的列表 class Product models Model title models CharField verbose name Product Tit

随机推荐

  • JQuery - 将点击事件添加到 LI 或 SPAN 元素?

    我正在尝试向 LI 元素添加单击事件 但它没有在页面中触发 我的页面标记如下所示 div ul li class navPrevNext inactive lt First Page li li class navPrevNext inac
  • 将图像粘贴到富文本中(例如 Gmail)

    我希望能够从剪贴板复制图像 特别是屏幕截图 并将它们直接粘贴到富文本编辑器中 和 或上传该文件 我们只使用 chrome 因此它只适用于 chrome http gmailblog blogspot com 2011 06 pasting
  • 不使用用户代理字符串检测 Google TV

    我们有一个客户希望将其内容发布到 Google TV 通过 Chrome 浏览器 但法律限制其在 常规网络 上发布 因此 我们希望通过 Javascript 检测 Google TV 浏览器 如果没有检测到 则禁止播放该内容 第一个想法是检
  • 帮助修复内存泄漏版本

    import VTM AViPodReaderViewController h import
  • Flask、Marshmallow 3 和 webargs use_args 无法解析参数

    对于 Flask 1 1 2 marshmallow 3 6 1 和 webargs 6 1 0 我的所有论点始终是missing Schema class ExportSearchSchema Schema limit fields In
  • 是否有与 C# 输出参数等效的 VB.NET?

    VB NET 是否有与 C 直接等效的工具out函数参数 传入函数的变量不需要初始化 不 没有等同的outVB 中的关键字 但是 VB 会自动初始化方法中的所有局部变量 因此您可以使用ByRef无需首先显式初始化变量 Example Sub
  • 如何在使用 Cordova Simulate 时获取 FileEntry 对象

    我正在尝试遵循拍照并获取 FileEntry 对象 https github com apache cordova plugin camera module camera getPictureCordova 相机插件的示例 我正在使用 Co
  • Facebook 图表 API 评论数

    Facebook似乎改变了帖子的结果 几周前可以直接从帖子中读取评论数 https graph facebook com 125909647492772 502974003098530 https graph facebook com 12
  • 在 WiX Bundle 中包含 .NET 安装程序未检测是否已安装

    我使用的是 WiX 3 7 无法让简单的 捆绑元素正常工作 因为它不会带来 Net FX 安装程序包 也不会将其嵌入到 setup exe 中 我已经在我的程序中为此创建了自己的包Bundle wxs文件 但我仍然遇到麻烦 即使机器已经安装
  • 禁止将拍摄的照片保存到 DCIM 文件夹中

    我在我的应用程序中通过 Intent 拍照 照片保存到 SD 上我指定的文件夹中 而且它们也保存到 DCIM 默认相机文件夹中 我不想两次 如何禁止将拍摄的照片保存到此默认相机目录中 先感谢您 这是我正在使用的 Intent intent
  • 刷新div(导致浏览重绘它)

    在 Web 应用程序中 我在动态内容方面遇到了一些麻烦 在 jQuery UI 选项卡控件上方隐藏或显示的表单会导致呈现问题 直到用户将鼠标悬停在选项卡上 然后导致选项卡标题重新绘制正确的位置 它只发生在 IE7 中 作为一个快速破解 我在
  • Mongoose 多更新

    我想用不同的值更新多个文档 我的数据库看起来像这样 id 1 value 50 id 2 value 100 此查询返回错误 因为我传递的是数组而不是 set 中的对象 Model update id in ids set ids valu
  • 为什么 doctype 不自动关闭

    提供了一个 xhtml 文档类型 例如 为什么这个标签本身允许非自关闭 根本不关闭 Aka为什么不是 它不是一个标签 元素 这是一个声明 这就是声明的语法 文档类型声明 http www w3 org TR REC xml sec prol
  • 反应导航选项中“lazyLoad”和“lazy”之间的区别

    我在选项卡更改上重新渲染组件时遇到问题 并且显然添加lazyLoad true导航选项解决了它 但我不太明白它是如何工作的 特别是在那之前 我遇到了另一个问题并添加lazy true选项解决了它 所以我的问题是 两者之间有什么区别以及它们在
  • 更改grep命令的分隔符

    我在用grep检测 a href xxxx something here a 当链接在输入中分成两行时 这不起作用 我想 grep 检查直到它检测到但现在它只是将输入输入到 grep 中 直到检测到新行为止 所以如果输入是这样的 a hre
  • 通过模板参数中的 SFINAE 选择构造函数

    我试图通过 SFINAE 选择一个构造函数 如下所示 template
  • 您可以使用 CASE WHEN THEN 别名进行 GROUP BY 吗?

    我有一个从别名为 Length 的 CASE WHEN THEN 状态 或者可以使用多个 IF 语句 计算的 SELECT 语句 并且我需要将结果正确地分组在一起 SELECT 似乎有效 但该小组将它们分组错误 这是我的声明 SELECT
  • SQL Developer 中查询的快捷方式

    我的同事使用 TOAD 有一个很好的功能 即查询快捷方式 例如 他们编写 get customer info 并且该单词被完整连接查询替换 这个功能对于提高生产力非常有用 我的机器未获得 Toad 许可 并且我使用 Oracle SQL D
  • 如何从 Linux 和 Solaris 上的挂载中提取 NFS 信息?

    我需要使用提取 NFS 挂载信息mount在 Linux RHEL 4 5 和 Solaris Solaris 10 系统上 由于这是 SSH 命令的一部分 因此提取需要在一行中进行 不幸的是 Linux 和 Solaris 在该行的不同部
  • 如何在南迁中访问 auth User 的 User.objects.create_user(...) ?

    我没有使用 django 的 auth 模块 而是使用了自己的模块 并且已经非常后悔了 为了纠正这种情况 我正在尝试将数据从我的用户模型迁移到 django auth models User 我创建了一个数据迁移 如下所示 def forw