2012-01-13 27 views
12

Tôi có một dự án Django bắt đầu dưới dạng một cơ sở dữ liệu cũ. Bởi vì điều này, có một mô hình với một khóa chính composite. Điều này làm việc miễn là tôi chỉ sử dụng dữ liệu cũ, nhưng bây giờ tôi muốn thêm dữ liệu mới và biểu mẫu tôi đã tạo cho tôi biết rằng tôi đang cố chèn dữ liệu trùng lặp, có lẽ vì nó chỉ xem một trong các trường như khóa chính.Thêm trường Autoincrement vào mô hình hiện tại với Django South?

Bây giờ tôi muốn thay đổi mô hình để sử dụng khóa chính tự động, như một Django sẽ tự động thêm. Tôi đã thử loại bỏ các thuộc tính khóa chính khỏi các trường và đặt chúng trong unique_together trong lớp Meta bên trong. Khi tôi chạy schemamigration với miền Nam, nó muốn thêm trường id như mong đợi, nhưng nó yêu cầu giá trị mặc định.

Làm cách nào để chỉ định rằng miền Nam nên gán các khóa duy nhất theo cách nào đó hợp lý cho trường tự động? (ví dụ: gán chuỗi thứ tự [1 ... n] cho một số thứ tự tùy ý của các hồ sơ)

Nếu không thể có cách khác để thực hiện điều tương tự, tốt nhất là sử dụng Django và miền Nam?

Trả lời

5

tôi đã giải quyết được vấn đề đó đòi hỏi tôi phải làm điều này với một workaround:

tôi sao chép dữ liệu từ bảng gốc vào một bảng tạm thời trong SQL với INSERT INTO... SELECT.... Sau đó tôi đã xóa bảng gốc và tạo lại nó bằng trường tự động. Sau đó, tôi sao chép dữ liệu trở lại bảng mới, với các giá trị tự động tăng thêm tự động bởi lệnh INSERT. Cuối cùng tôi đã thực hiện một cuộc chạy giả mạo của di cư miền Nam để làm cho các bảng của Nam phù hợp với lược đồ mới.

Các vấn đề liên quan