답변:
관리자 내부 :
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, )
그 비트를 사용 하여 테이블을 비워 두지 만 그대로 둡니다.
모든 테이블에서 모든 데이터를 제거하려면 명령을 시도 할 수 있습니다 python manage.py flush
. 이렇게하면 테이블의 모든 데이터가 삭제되지만 테이블 자체는 여전히 존재합니다.
여기에서 더보기 : https://docs.djangoproject.com/en/1.8/ref/django-admin/
Django 1.11 데이터베이스 테이블에서 모든 개체 삭제-
Entry.objects.all().delete() ## Entry being Model Name.
- 아래 인용 여기 공식 장고 문서를 참조하십시오 https://docs.djangoproject.com/en/1.11/topics/db/queries/#deleting-objects
delete ()는 Manager 자체에 노출되지 않는 유일한 QuerySet 메서드입니다. 이것은 실수로 Entry.objects.delete ()를 요청하고 모든 항목을 삭제하는 것을 방지하는 안전 메커니즘입니다. 모든 개체를 삭제하려면 전체 쿼리 집합을 명시 적으로 요청해야합니다.
나는 내 아래에 보이는 코드 스 니펫을 시도했다. 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)
내 안에는 views.py
단순히 html 페이지를 렌더링하는 뷰가 있습니다 ...
def data_del_4(request):
obj = calc_2() ##
obj.del_model_4()
return render(request, 'dc_dash/data_del_4.html') ##
-model == model_4에서 모든 항목을 삭제했지만 이제는 model_4의 모든 개체가 삭제되었음을 알리려고 할 때 관리 콘솔 내에 오류 화면이 표시됩니다.
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"
ADMIN 콘솔로 이동하지 않고 이미 삭제 된 모델의 개체를 확인하려고 시도하면 Django 앱이 의도 한대로 작동합니다.
몇 가지 방법이 있습니다.
직접 삭제하려면 :
SomeModel.objects.filter(id=id).delete()
인스턴스에서 삭제하려면 :
instance1 = SomeModel.objects.get(id=id)
instance1.delete()
// 같은 이름을 사용하지 마십시오.