Tôi đã làm việc trên phiên bản ngoại tuyến của ứng dụng web Django của mình và đã xóa các phiên bản mô hình thường xuyên đối với một ModelX nhất định.Trường hợp mô hình Django các khóa chính không được đặt lại thành 1 sau khi tất cả các trường hợp bị xóa
Tôi đã thực hiện việc này từ trang quản trị và không gặp phải sự cố nào. Mô hình chỉ có hai trường: tên và thứ tự và không có mối quan hệ nào khác với các mô hình khác.
Các phiên bản mới được cung cấp cho pk có sẵn tiếp theo, và khi tôi đã xóa tất cả các trường hợp, thêm một phiên bản mới tạo ra giá trị pk = 1, mà tôi mong đợi.
Chuyển mã trực tuyến sang cơ sở dữ liệu thực của tôi Tôi nhận thấy rằng đây không phải là trường hợp. Tôi cần phải thay đổi các trường hợp mô hình vì vậy tôi đã xóa tất cả các trường hợp đó nhưng tôi đã bất ngờ khi các phím chính được giữ lại mà không cần đặt lại trở lại 1.
Đi vào cơ sở dữ liệu bằng API Django tôi đã kiểm tra và các phiên bản cũ đã biến mất, nhưng thậm chí thêm các phiên bản mới mang lại khóa chính mà chọn lên trường hợp phiên bản đã xóa cuối cùng còn lại, thay vì 1.
Tự hỏi liệu có ai biết vấn đề ở đây không.
Điều tôi không hiểu là tại sao phiên bản ngoại tuyến không hoạt động theo cách tương tự như phiên bản trực tuyến. – pj2452
sử dụng các bài kiểm tra đơn vị cần tạo ra dữ liệu thử nghiệm nhất định trong cơ sở dữ liệu sẽ là một trường hợp, trừ khi bạn muốn tạo một bảng mới với mọi thử nghiệm. – Mehdi
Bạn đang sử dụng cùng một cơ sở dữ liệu trong phát triển như trong sản xuất? Trong sqlite cụ thể giải phóng các phím của các đối tượng đã xóa để tái sử dụng (không may, nếu bạn phụ thuộc vào tính duy nhất của khóa). https://sqlite.org/autoinc.html – DylanYoung