Câu trả lời:
Bên trong một người quản lý:
def delete_everything(self):
Reporter.objects.all().delete()
def drop_table(self):
cursor = connection.cursor()
table_name = self.model._meta.db_table
sql = "DROP TABLE %s;" % (table_name, )
cursor.execute(sql)
'DELETE FROM %s' % (table_name, )
cho bit đó, để lại bảng trống nhưng nguyên vẹn.
Theo tài liệu mới nhất , phương pháp chính xác để gọi sẽ là:
Reporter.objects.all().delete()
delete
phương thức của cá thể được gọi, trong khi với lệnh delete
gọi trên QuerySet
thì không.
Nếu bạn muốn xóa tất cả dữ liệu khỏi tất cả các bảng của mình, bạn có thể muốn thử lệnh python manage.py flush
. Thao tác này sẽ xóa tất cả dữ liệu trong bảng của bạn, nhưng bản thân các bảng sẽ vẫn tồn tại.
Xem thêm tại đây: https://docs.djangoproject.com/en/1.8/ref/django-admin/
Django 1.11 xóa tất cả các đối tượng khỏi bảng cơ sở dữ liệu -
Entry.objects.all().delete() ## Entry being Model Name.
Tham khảo tài liệu Django chính thức tại đây như được trích dẫn bên dưới - https://docs.djangoproject.com/en/1.11/topics/db/queries/#deleting-objects
Lưu ý rằng delete () là phương thức QuerySet duy nhất không được hiển thị trên chính Trình quản lý. Đây là một cơ chế an toàn để ngăn bạn vô tình yêu cầu Entry.objects.delete () và xóa tất cả các mục nhập. Nếu bạn muốn xóa tất cả các đối tượng, thì bạn phải yêu cầu rõ ràng một bộ truy vấn hoàn chỉnh:
Bản thân tôi đã thử đoạn mã được thấy bên dưới trong somefilename.py
# for deleting model objects
from django.db import connection
def del_model_4(self):
with connection.schema_editor() as schema_editor:
schema_editor.delete_model(model_4)
và trong views.py
tôi có một chế độ xem chỉ đơn giản là hiển thị một trang html ...
def data_del_4(request):
obj = calc_2() ##
obj.del_model_4()
return render(request, 'dc_dash/data_del_4.html') ##
nó đã kết thúc việc xóa tất cả các mục từ - model == model_4, nhưng bây giờ tôi thấy màn hình Lỗi trong Bảng điều khiển dành cho quản trị viên khi tôi cố gắng xác nhận rằng tất cả các đối tượng của model_4 đã bị xóa ...
ProgrammingError at /admin/dc_dash/model_4/
relation "dc_dash_model_4" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "dc_dash_model_4"
Hãy xem xét điều đó - nếu chúng tôi không truy cập Bảng điều khiển ADMIN và thử xem các đối tượng của mô hình - đã bị xóa - ứng dụng Django hoạt động như dự kiến.
Có một vài cách khác nhau:
Để xóa nó trực tiếp:
SomeModel.objects.filter(id=id).delete()
Để xóa nó khỏi một phiên bản:
instance1 = SomeModel.objects.get(id=id)
instance1.delete()
// không sử dụng cùng tên