2012-02-04 37 views
56

Tôi cần phải chọn một số đối tượng sẽ bị xóa khỏi cơ sở dữ liệu của tôi trong django bằng cách sử dụng trang web. Không có danh mục nào để chọn nên tôi không thể xóa khỏi tất cả các danh mục như vậy. Tôi có phải thực hiện hình thức xóa của riêng tôi và xử lý nó trong django hay không django có một cách để đã làm điều này? Như được thực hiện trong giao diện quản trị.Xóa nhiều đối tượng trong django

Trả lời

101

Bạn có thể xóa bất kỳ QuerySet nào bạn muốn. Ví dụ, để xóa tất cả các bài đăng trên blog với một số mô hình bài

Post.objects.all().delete() 

và xóa bất kỳ bài viết với một ngày công bố tương lai

Post.objects.filter(pub_date__gt=datetime.now()).delete() 

Bạn làm gì, tuy nhiên, cần phải tìm ra một cách để thu hẹp xuống QuerySet của bạn. Nếu bạn chỉ muốn xem một đối tượng cụ thể, hãy nhìn vào delete generic view.

EDIT:

Xin lỗi vì sự hiểu lầm. Tôi nghĩ câu trả lời là ở đâu đó giữa. Để triển khai riêng của bạn, hãy kết hợp ModelForm s và generic views. Nếu không, hãy xem xét các ứng dụng của bên thứ ba cung cấp chức năng tương tự. Trong một số related question, đề xuất là django-filter.

+1

Không có bạn đã hiểu nhầm câu hỏi. Tôi hiểu tôi có thể xóa mọi thứ. Nhưng tôi cần phải chọn các đối tượng cần xóa bằng biểu mẫu trên trang web. Và sau đó xử lý dữ liệu được trả lại từ biểu mẫu trong views.py của tôi. Sau đó lặp lại những gì được trả về trong biểu mẫu xóa như vòng lặp của nó thông qua dữ liệu. Nhưng tôi muốn biết thực hành tốt nhất để thực hiện điều này trong django là gì. – Dean

+0

Ah, sai lầm của tôi! Tôi sẽ sử dụng ứng dụng của bên thứ ba hoặc chế độ xem chung với 'ModelForm's. –

+5

@Dean, hãy xem chế độ xem xóa đó. Hoặc bạn chỉ có thể viết xem của riêng bạn ... Tôi có nghĩa là cuối cùng bạn có thể nhận được một danh sách các PK và gọi xóa trên mô hình của bạn ... 'MyModel.objects.filter (id__in = request.POST.getlist ('delete_list')) .delete() 'và tôi chắc chắn bạn muốn một cái gì đó để đảm bảo một người ngẫu nhiên không thể xóa tất cả các đối tượng trong DB của bạn bằng cách đoán PK. –

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