我不想破坏我网站上的所有用户。但是我想利用Django 1.5的自定义可插入用户模型。这是我的新用户模型:
class SiteUser(AbstractUser):
site = models.ForeignKey(Site, null=True)
一切都可以在新安装的新模型上正常工作(我还有其他代码,并且有这样做的充分理由-所有这些在这里都无关紧要)。但是,如果我将其放在我的活动站点上并进行同步数据库和迁移,我将失去所有用户,或者至少他们将位于与为新模型创建的新表不同的孤立表中。
我对South很熟悉,但是根据这篇文章和我的一些试验,似乎它的数据迁移当前不适合这种特定的迁移。因此,我正在寻找某种方法来使South能够为此工作或进行一些非South迁移(原始SQL,dumpdata / loaddata或其他方式),以便可以在每台服务器上运行(Postgres 9.2)以迁移用户一旦创建了新表,而旧的auth.User表仍在数据库中。
South不仅可以为你完成此迁移,但你需要精明并分阶段进行。以下是分步指南:(此指南假设你是子类AbstractUser
,而不是AbstractBaseUser
)
accounts
和模型User
)。此时,你应该还没有自定义用户模型。$ ./manage.py schemamigration accounts --initial
Creating migrations directory at 'accounts/migrations'...
Creating __init__.py in 'accounts/migrations'...
Created 0001_initial.py.
$ ./manage.py migrate accounts [--fake if you've already syncdb'd this app]
Running migrations for accounts:
- Migrating forwards to 0001_initial.
> accounts:0001_initial
- Loading initial data for accounts.
$ ./manage.py schemamigration accounts --empty switch_to_custom_user
Created 0002_switch_to_custom_user.py.
class SiteUser(AbstractUser): pass
# encoding: utf-8
from south.db import db
from south.v2 import SchemaMigration
class Migration(SchemaMigration):
def forwards(self, orm):
# Fill in the destination name with the table name of your model
db.rename_table('auth_user', 'accounts_user')
db.rename_table('auth_user_groups', 'accounts_user_groups')
db.rename_table('auth_user_user_permissions', 'accounts_user_user_permissions')
def backwards(self, orm):
db.rename_table('accounts_user', 'auth_user')
db.rename_table('accounts_user_groups', 'auth_user_groups')
db.rename_table('accounts_user_user_permissions', 'auth_user_user_permissions')
models = { ....... } # Leave this alone
$ ./manage.py migrate accounts
- Migrating forwards to 0002_switch_to_custom_user.
> accounts:0002_switch_to_custom_user
- Loading initial data for accounts.
# settings.py
AUTH_USER_MODEL = 'accounts.User'
# accounts/models.py
class SiteUser(AbstractUser):
site = models.ForeignKey(Site, null=True)
$ ./manage.py schemamigration accounts --auto
+ Added field site on accounts.User
Created 0003_auto__add_field_user_site.py.
$ ./manage.py migrate accounts
- Migrating forwards to 0003_auto__add_field_user_site.
> accounts:0003_auto__add_field_user_site
- Loading initial data for accounts.
老实说,如果你已经对设置有所了解并且已经使用过South,那么这就像向帐户模块添加以下迁移操作一样简单。
# encoding: utf-8
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Fill in the destination name with the table name of your model
db.rename_table('auth_user', 'accounts_user')
db.rename_table('auth_user_groups', 'accounts_user_groups')
db.rename_table('auth_user_permissions', 'accounts_user_permissions')
# == YOUR CUSTOM COLUMNS ==
db.add_column('accounts_user', 'site_id',
models.ForeignKey(orm['sites.Site'], null=True, blank=False)))
def backwards(self, orm):
db.rename_table('accounts_user', 'auth_user')
db.rename_table('accounts_user_groups', 'auth_user_groups')
db.rename_table('accounts_user_user_permissions', 'auth_user_user_permissions')
# == YOUR CUSTOM COLUMNS ==
db.remove_column('accounts_user', 'site_id')
models = { ....... } # Leave this alone
在构建Room数据库之前,我尝试保留旧的SqliteOpenHelper并使用它从1升级到3。这在第一次运行时有效,但随后的运行会使SqliteOpenHelper崩溃,因为它不能降级数据库(Room成功升级到v4,但open helper只知道v3。使用它来确保升级到v3的数据库会导致它尝试降级)
mysql 5.5 ,将数据库中指定的用户数据迁移到另外一个库,不保留主键,并更新关联主键字段。如:article 表的id迁移到新库的时候是重新生成的自增id,同时需要更新article_item表中的article_id为新的记录。大概有80张表,有什么比较好比较便捷的方法吗?
我需要将phpBB3用户迁移到Drupal7。用户必须能够使用他们的phpBB用户名/密码组合在Drupal中进行身份验证。 有没有办法把密码翻译成Drupal7格式?
如何使用django租户模式将数据从共享模式迁移到多租户模式? 我们有一个saas,最初没有使用django租户模式,而是使用共享数据库、共享模式的方法。我们现在发现了django租户模式,并认为这是正确的选择。 现在的问题是如何将数据从单一的模式迁移到独立的租户模式。 文档说明如下: 注意:如果这是您第一次运行此命令,您的数据库应该是空的。 在我现有的应用程序中,我有一个租户表,所有其他模型都有
我正在尝试使用Kafka将数据从oracle迁移到mongodb。我取了一个1000万的样本记录集,列长为90,每行为5KB 我将数据分成10个线程,但其中一个线程不是每次都在运行....当我检查数据时,我看到MongoDB中丢失了100万条记录。 主类: Kafka制作人线程类: JSONObject obj=new JSONObject(); while(rs.next()){ 消费者类:
问题内容: 将Solr核心迁移到elasticsearch索引的最佳方法是什么? 不推荐使用solr-river-plugin(https://github.com/javanna/elasticsearch-river- solr )。 问题答案: OpenSource Connections中有一个不错的,由爱心人士精心制作的自定义Python工具,您可以用来执行以下操作: https://g