Có vẻ như django dumpdata đã bán đồ đạc không đúng thứ tự. Tìm trong tệp json để kiểm tra xem product
với id: 1
có mặt ở đó. Nếu tôi cho là đúng, hãy sử dụng một số công cụ phức tạp hơn để kết xuất dữ liệu, ví dụ: django-fixture-magic
Ngoài ra, bạn có thể muốn xóa tất cả các ràng buộc toàn vẹn bằng công cụ db ngay trước khi tải lên và cố gắng tạo lại chúng ngay sau đó, nhưng điều này hơi rủi ro nếu một số lỗi về tính toàn vẹn sẽ xuất hiện.
Đối với PostgreSQL, hãy tham khảo chuỗi này để biết cách lấy các định nghĩa bảng của bạn. Trong MySQL, nó sẽ như sau:
$ mysqldump --no-data -utest django auth_user_user_permissions
CREATE TABLE `auth_user_user_permissions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`permission_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `user_id` (`user_id`,`permission_id`),
KEY `auth_user_user_permissions_403f60f` (`user_id`),
KEY `auth_user_user_permissions_1e014c8f` (`permission_id`),
CONSTRAINT `user_id_refs_id_dfbab7d` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`),
CONSTRAINT `permission_id_refs_id_67e79cb` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Phần sau sẽ hoạt động cho oracle, postgre và mysql
> alter table `auth_user_user_permissions` drop foreign key `user_id_refs_id_dfbab7d`;
Query OK, 0 rows affected (0.97 sec)
Records: 0 Duplicates: 0 Warnings: 0
> alter table `auth_user_user_permissions` add CONSTRAINT `user_id_refs_id_dfbab7d` FOREIGN KEY (`user_id`) references `auth_user` (`id`);
Query OK, 0 rows affected (0.95 sec)
Records: 0 Duplicates: 0 Warnings: 0