Di chuyển tùy chỉnh sẽ hoạt động.
- Bạn đã có mô hình A và B, vì vậy hãy tạo mô hình C với các trường bạn muốn từ hai mô hình.
- Thực hiện di chuyển giản đồ bình thường, ví dụ:management.py makemigrations ... và áp dụng cho bất kỳ thay đổi hiện có nào
- Tạo một di chuyển tùy chỉnh, ví dụ:python management.py makemigrations --empty yourappname (xem liên kết được chia sẻ bởi @ 2ps
- Chỉnh sửa tệp được tạo ở trên, tôi đã thêm một lần di chuyển dữ liệu mẫu bên dưới.
- rum management.py di chuyển để áp dụng di chuyển từ bước 4 ở trên.
-
Bỏ mô hình A và B nếu đó là mong muốn của bạn, tạo quá trình di chuyển và áp dụng và bạn sẽ tốt.
...
def merge_models_ab(apps, schema_editor): A = apps.get_model("app_name", "A") B = apps.get_model("app_name", "B") C = apps.get_model("app_name", "C") #come up with some interesting ways to join A and B #iterate over join and insert into C #C.objects.create(...)
...
class Migrations(migrations.Migration): dependencies = [ ('app_name', 'some_prev_migrations'), ] operations = [ migrations.RunPython(merge_models_ab), ]