Tôi tự hỏi cách tốt nhất để lặp qua bộ truy vấn Django trong khi xóa các đối tượng trong Queryset là gì? Ví dụ: giả sử bạn có một bảng nhật ký với các mục nhập tại các thời điểm cụ thể và bạn muốn lưu trữ chúng để không có quá 1 mục nhập mỗi 5 phút. Tôi biết điều này có thể sai, nhưng đây là loại gì tôi sẽ cho:Lặp lại trên một bộ truy vấn Django trong khi xóa các đối tượng trong cùng một QuerySet
toarchive = Log.objects.all().order_by("-date")
start = toarchive[0].date
interval = start - datetime.timedelta(minutes=5)
for entry in toarchive[1:]:
if entry.date > interval:
entry.delete()
else:
interval = entry.date - datetime.timedelta(minutes=5)
Điều này hợp lệ, bạn có thể xóa các đối tượng theo cách đó. – Rohan
Sử dụng delete() khi lặp trên queryset như thế, giữ một reccord trống khi tôi đi đến trang quản trị của mô hình. Dường như đối tượng không bị xóa hoàn toàn. Chuyện gì vậy? –