问题标签 [django-south]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - 如何在南迁移中访问身份验证用户的 User.objects.create_user(...)?
我没有使用 django 的 auth 模块,而是使用了我自己的并且已经很后悔了。
为了纠正这种情况,我正在尝试将数据从我的用户模型迁移到 django.auth.models.User。
我创建了如下数据迁移:
当我运行迁移时,我收到此错误(回溯):
经过进一步调查,我发现Manager
所提到的那个是south.orm.NoDryRunManager
解释错误的时间。
现在,我什至需要create_user
创建一个django.contrib.auth
可以理解的密码哈希。
说了这么多,我该怎么做呢?考虑到我所在的洞,最优雅的解决方案是什么?!
提前致谢。
更新 1
正如stevejalim所建议的,我尝试使用User
'sset_password(...)
如下:
然而,这个错误失败了:
我确实在南文档中找到了一个提示,其中指出:
South 不会冻结模型的每个方面。例如,它不保留新的管理器或自定义模型方法,因为这些需要序列化运行这些方法的 python 代码(以及依赖的代码,等等)。
如果您想在迁移中使用自定义方法,则必须将代码复制进去,包括它所依赖的任何导入。但是请记住,对于您添加的每个导入,您都承诺在迁移期间保持该导入有效。
我想问题仍然存在,最好/最安全的方法是什么?把方法复制set_password(...)
过来?为我创建一个散列密码的函数?还有其他想法吗?
python - 如何在南迁移期间调用 django 模型类的静态方法
我正在南方编写数据迁移,以修复我在早期代码中搞砸的一些非规范化数据。找出错误字段的正确值的方法是在 django 模型类上调用静态方法。代码如下所示:
...
但这失败了
AttributeError: type object 'Account' has no attribute 'lookup_by_name'
我猜南只是不支持@staticmethod
模型类的 s 吗?
尝试直接导入 Account 失败,除非我也直接导入 Record 并完全忽略 ORM 对象。这是一个安全的选择,因为它是数据迁移并且架构没有改变?或者我应该手动运行此修复程序,而不是在南迁的情况下运行此修复程序。
python - 使用 django+south 迁移更改表的编码
Django和南方新手在这里
我需要更改我创建的表的编码,有人知道使用迁移的方法吗?
python - 使用 --auto 更改具有 django+south 迁移的表的编码
Django新手在这里
我知道我可以通过编写自己的南迁移来更改表的编码。
我的问题是,有没有办法通过改变我的模型并使用
?
django - 在 Django 中扩展 South Introspection
我有一个自定义应用程序,我想开始使用 South。它使用 FK 将博客条目与另一个应用程序(专有的,不是我编写的)相关联。问题是当我尝试运行初始架构迁移时,我收到一个错误,即无法冻结某些博客条目应用程序的字段。无法冻结的字段是使用从核心字段扩展的自定义字段的字段。
我阅读了 South 关于扩展自省的文档,但我不知道在哪里/如何定义自省规则。
在此先感谢您的任何建议。
django - 如何用 South 重命名外键字段?
重命名一个简单的字符域等似乎很容易(Django - How to rename a model field using South?)
但是,当我尝试在 ForeignKey 字段上使用相同的字段时,出现错误:
这源于迁移由于某种原因试图向后运行(如跟踪所示)。
有任何想法吗?
django-models - 迁移 django-model 字段名称更改而不丢失数据
我有一个 django 项目,其中包含一个已经包含数据的数据库表。我想更改字段名称而不会丢失该列中的任何数据。我最初的计划是简单地更改模型字段名称,而不会实际更改 db 表的名称(使用db_column
column 参数):
原型号:
新型号:
但是,运行 South'sschemamigration --auto
会生成一个迁移脚本,该脚本会删除原始列 ,orig_name
并添加一个新列 ,name
这会产生删除该列中数据的不良副作用。(我也很困惑 South 为什么要更改数据库中列的名称,因为我对 db_column 的理解是它可以在不更改数据库表列名称的情况下更改模型字段名称)。
如果我无法在不更改 db 字段的情况下更改模型字段,我想我可以像这样进行更直接的名称更改:
原型号:
新型号:
无论我最终使用哪种策略(我更喜欢第一种,但会发现第二种可以接受),我主要关心的是确保我不会丢失该列中已经存在的数据。
这需要一个多步骤的过程吗?(例如 1. 添加一列,2. 将数据从旧列迁移到新列,以及 3. 删除原始列)或者我可以用类似的东西更改迁移脚本db.alter_column
吗?
在更改列名的同时保留该列中的数据的最佳方法是什么?
django - Django South“myapp.foo”已经存在”初始迁移错误
我有一个已经存在的应用程序,其中包含很多数据库条目。
为此,我这样做:
我将模型更改为:
并迁移:
我得到django.db.utils.DatabaseError: relation "myapp.foo" already exists
错误。
我已经检查过这个问题,但 South 似乎不再支持 --fake 了。
django - 如何使用 django-south 从 django-imagekit 迁移包含 ImageField 的模型?
我发现这个文档非常令人困惑: http ://south.aeracode.org/docs/customfields.html
如果有人能引导我完成这个或至少给出一个完整的例子,我将非常感激。
django - 如何使用 South 的 DataMigration 更改 Django 模型 ImageField 实例的存储后端?
我正在尝试将一些模型 ImageFields 迁移到使用S3BotoStorage
来自django-storages
. 作为此过程的一部分,我已更改模型的 ImageField 声明以包含storage=instance_of_s3botostorage
参数,并且将图像保存到 ImageField 属性的模型的新实例现在按预期存储在 S3 中。
我也尝试将现有模型实例移动到将它们的数据存储在 S3 中,所以写了一个这样的 South DataMigration:
但这显然没有达到预期的效果,因为图像文件只是使用旧storage
后端保存的——考虑到 save() 实际上是FieldFile
属于FileField
那么,如何移动/更改模型实例上的文件存储?