Tôi đang cố gắng di chuyển một vài mô hình từ ứng dụng Django này sang ứng dụng khác và dựa trên câu hỏi này How do I migrate a model out of one django app and into a new one? Tôi đã làm việc này khá nhiều nhưng khi tạo di chuyển đầu tiên tôi nhận được lỗi này:contenttypes.contenttype không có sẵn trong di chuyển này
"The model 'contenttype' from the app 'contenttypes' is not available in this migration."
Google và SO dường như không tìm thấy bất kỳ trường hợp cho điều này xảy ra và câu hỏi nêu trên không có bất cứ điều gì cụ thể để nói về nó cả, trừ những nhận xét trong các mã:
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')
Sẽ thực sự đánh giá cao ăn sâu vào những gì tôi đang làm sai.
Dưới đây là các tập tin hai di cư:
Tạo:
# 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
Xóa:
# 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))
Theo tài liệu ở phía Nam: _Lưu ý rằng bạn chỉ có thể truy cập các mô hình đã bị đóng băng; Phía Nam tự động bao gồm mọi thứ có thể đạt được thông qua các khóa ngoại hoặc các mối quan hệ nhiều-nhiều, nhưng nếu bạn muốn thêm các mô hình khác, chỉ cần chuyển --tên ứng dụng sang lệnh ./manage.py datamigration._ – dgel
Vì vậy, âm thanh giống như bạn cần phải có ứng dụng ContentTypes được truyền đến - vô hiệu hóa tại một số thời điểm. Không hoàn toàn hiểu làm thế nào, nhưng có thể là một gợi ý đi đúng hướng. – dgel
Giả sử rằng ứng dụng ContentTypes sẽ không được nhắm mục tiêu của bất kỳ sơ đồ nào, việc nhập các mô hình từ dự án Django là xấu đến mức nào? _from nhập django.contrib.contenttypes.models ContentType_ _ContentType.objects.filter (app_label = 'common', model = 'cat') cập nhật (app_label = 'specific') _ – JCJS