장고를 사용하여 표의 모든 데이터를 제거하는 방법
두 가지 질문이 있습니다.
- 장고에서 테이블을 삭제하려면 어떻게 해야 합니까?
- 표의 모든 데이터를 제거하려면 어떻게 해야 합니까?
이 코드는 성공하지 못한 코드입니다.
Reporter.objects.delete()
관리자 내부:
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)
최신 문서에 따르면 올바른 통화 방법은 다음과 같습니다.
Reporter.objects.all().delete()
모든 테이블에서 모든 데이터를 제거하려면 다음 명령을 사용해 보십시오.python manage.py flush
이렇게 하면 테이블의 모든 데이터가 삭제되지만 테이블 자체는 계속 존재합니다.
여기서 더 보기: https://docs.djangoproject.com/en/1.8/ref/django-admin/
쉘을 사용해서,
테이블 삭제의 경우:
python manage.py dbshell
>> DROP TABLE {app_name}_{model_name}
테이블에서 모든 데이터를 제거하는 경우:
python manage.py shell
>> from {app_name}.models import {model_name}
>> {model_name}.objects.all().delete()
장고 1.11 데이터베이스 테이블에서 모든 객체 삭제 -
Entry.objects.all().delete() ## Entry being Model Name.
아래에 인용된 공식 장고 문서를 참조하십시오. - https://docs.djangoproject.com/en/1.11/topics/db/queries/ #http-http://-
관리자 자체에 표시되지 않는 유일한 QuerySet 메서드는 delete()입니다.이는 실수로 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_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"
Django 앱은 관리 콘솔로 이동하여 이미 삭제된 모델의 개체를 확인하지 않으면 의도한 대로 작동합니다.
다음 구문을 사용하여 행을 삭제하고 홈 페이지로 리디렉션합니다(페이지 로드 오류를 방지하려면).
def delete_all(self):
Reporter.objects.all().delete()
return HttpResponseRedirect('/')
Django-Truncate 라이브러리를 사용하여 테이블 구조를 파괴하지 않고 테이블의 모든 데이터를 삭제할 수 있습니다.
예:
- 먼저 터미널/명령줄을 사용하여 django-turncate를 설치합니다.
pip install django-truncate
- 의 설치된_APP에 "django_truncate"를 추가합니다.
settings.py
파일:
INSTALLED_APPS = [
...
'django_truncate',
]
- 단말기에서 이 명령을 사용하여 앱에서 테이블의 모든 데이터를 삭제합니다.
python manage.py truncate --apps app_name --models table_name
몇 가지 방법이 있습니다.
직접 삭제하기
SomeModel.objects.filter(id=id).delete()
인스턴스에서 삭제하기
instance1 = SomeModel.objects.get(id=id)
instance1.delete()
같은 이름 사용 안 함
이 질문이 오래 전 일이라는 것을 압니다. 하지만 참고로, 이것이 저를 구했기 때문입니다.
python manage.py flush
위의 내용은 데이터베이스의 모든 데이터를 삭제합니다(Postgre).이 경우 SQL).심지어 슈퍼 유저도.
특정 테이블의 모든 행을 삭제하려면 다음을 수행합니다.
python manage.py shell
>> from app.models import SomeTable
>> SomeTable.objects.all().delete()
사실 저는 admin.py 에서 모델(삭제하려는 테이블 데이터)의 등록을 취소합니다.그리고 난 이주합니다.
python manage.py makemigrations
python manage.py migrate
python runserver
그런 다음 admin.py 에 모델을 등록하고 다시 마이그레이션을 수행합니다.:) 이제 테이블이 비었습니다.전문적인 답변은 아닐 수 있지만 도움이 되었습니다.
언급URL : https://stackoverflow.com/questions/4532681/how-to-remove-all-of-the-data-in-a-table-using-django
'programing' 카테고리의 다른 글
데이터 프레임의 열을 열 이름별로 정렬 (0) | 2023.07.15 |
---|---|
깃풀 미리보기 방법? (0) | 2023.07.15 |
Thymeleaf 및 Spring Boot에서 메시지를 표시하는 방법은 무엇입니까? (0) | 2023.07.15 |
스키마 이름을 변경하는 방법? (0) | 2023.07.15 |
XAML - 'Content' 속성이 두 번 이상 설정되었습니다. (0) | 2023.07.15 |