Thay vì xóa bản ghi trong ứng dụng Django của tôi, tôi muốn chỉ đánh dấu chúng là "đã xóa" và ẩn chúng khỏi các truy vấn hoạt động của tôi. Lý do chính của tôi để làm điều này là cung cấp cho người dùng tùy chọn phục hồi trong trường hợp họ vô tình xóa bản ghi (các bản ghi này cũng có thể cần thiết cho một số kiểm tra phụ trợ nhất định.)Làm cách nào để tôi có thể dễ dàng đánh dấu các bản ghi bị xóa trong các mô hình Django thay vì xóa chúng?
Có rất nhiều mối quan hệ khóa ngoại, vì vậy khi Tôi đánh dấu một bản ghi là đã xóa Tôi sẽ phải "Cascade" cờ xóa này cho những bản ghi là tốt. Tôi nên sử dụng công cụ, dự án hiện có hoặc phương pháp nào để thực hiện việc này?
nhưng tôi không tin rằng các tìm kiếm từ các đối tượng khác tôn trọng điều này. tức là nếu bạn tìm kiếm từ một mô hình có liên quan, nó sẽ sử dụng trình quản lý bỏ qua các bản ghi đã xóa. Điều đó có nghĩa là các bản ghi được đánh dấu đã xóa sẽ vẫn còn nguyên vẹn mối quan hệ của chúng - đó có lẽ không phải là những gì bạn muốn. – fastmultiplication
@fastmultiplication Bởi "nó sẽ sử dụng trình quản lý bỏ qua các bản ghi đã xóa", bạn có nghĩa là nó sẽ bỏ qua cờ đã xóa, tức là nó sẽ bao gồm xóa các bản ghi? Đó là hành vi tôi thấy. –
. Sử dụng các trình quản lý để kiểm soát các đối tượng nào có thể truy cập chỉ hoạt động khi bạn sử dụng lớp đó. Nói lớp A đang sử dụng một trình quản lý để ẩn các đối tượng "đã xóa", sau đó 'A.objects' sẽ ẩn các đối tượng đã xóa. Nhưng nếu A liên quan đến lớp B, sau đó 'B.filter (a__name = 'smith')', sẽ tìm kiếm tất cả các đối tượng A, thậm chí cả các đối tượng đã xóa. – fastmultiplication