いくつかのモデルをあるDjangoアプリから別のアプリに移行しようとしていますが、この質問に基づいて、モデルを1つのdjangoアプリから新しいアプリに移行するにはどうすればよいですか?私はそれをかなり機能させましたが、最初の移行を作成するときにこのエラーが発生します:
"The model 'contenttype' from the app 'contenttypes' is not available in this migration."
グーグルとSOはこれが起こったケースを見つけていないようで、前述の質問には、コード内のコメントを除いて、それについて具体的に言うことは何もありません。
if not db.dry_run:
# For permissions to work properly after migrating
orm['contenttypes.contenttype'].objects.filter(app_label='common', model='cat').update(app_label='specific')
私が間違っていることについての洞察を本当に感謝します。
2つの移行ファイルは次のとおりです。
作成:
# encoding: utf-8
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
db.rename_table('cars_country', 'general_country')
if not db.dry_run:
# For permissions to work properly after migrating
orm['contenttypes.ContentType'].objects.filter(app_label='cars', model='country').update(app_label='general')
def backwards(self, orm):
pass
消去:
# encoding: utf-8
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
depends_on = (
('general', '0002_create_country'),
)
def forwards(self, orm):
db.alter_column('cars_club', 'country_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['general.Country'], null=True))
def backwards(self, orm):
db.rename_table('general_country', 'cars_country')
db.alter_column('cars_club', 'country_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['cars.Country'], null=True))