2014-03-06 2 views
2

을 삭제 나는 모델 인스턴스를 삭제하는 가장 좋은 방법을 알고 있어야합니다.장고 모델 삭제 : 검색어 세트 대 인스턴스가

myModel = MyModel.objects.get(id=1) 
myModel.delete() 

의 검색어가 예를 삭제 :

인스턴스 예를 삭제

MyModel.objects.filter(id=1).delete() 

무엇 의 검색어 삭제 기술 대 예를 사이의 차이점? 반대의 경우도 마찬가지 삭제하고예를 대신 의 검색어를 사용하여 어떤 부작용이 이 있습니까?

P. 당신의 대답이 특정 버전이라고 생각하시면 장고> = 1.6을 요구한다고 가정하십시오. 객체를 선택 1 : 인스턴스 삭제

답변

2

두 개의 쿼리를 포함한다. 객체를 삭제하기위한 기타. 삭제 :

의 검색어 삭제하는 동안

은 하나의 쿼리를 포함한다.

인스턴스 삭제의 부작용 : myModel.pk (== myModel.id)은 삭제 후 None이됩니다.

+0

그것은 "계단식"에 어떤 영향을 미칠 "아이"테이블에 삭제합니까; 모델과 관련된 다른 테이블의 행이 삭제됩니까? –

+0

@JosvicZammit, 예. [문서]에 따르면 (https://docs.djangoproject.com/en/1.6/topics/db/queries/#topics-db-queries-delete는) : 장고는 기본적으로 개체를 삭제하면 그것의 동작을 에뮬레이트 ON DELETE CASCADE의 SQL 제약 - 즉, 삭제 될 객체를 가리키는 외래 키를 가진 객체는 함께 삭제됩니다. – falsetru

+0

@JosvicZammit, 당신은'on_delete' 필드 속성을 사용하여 그것을 사용자 정의 할 수 있습니다. ['ForeignKey.on_delete'] (https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.on_delete) – falsetru