2013-05-15 9 views
3

데이터 저장소의 엔티티에서 계단식 삭제를하고 싶습니다. 이것으로 모든 아이들과 간접 아이들 또한 삭제된다는 것을 의미합니다. 기업이의 부모가 될 수 있기 때문에,모든 하위를 포함하는 엔티티를 삭제하는 방법

ndb.delete_multi(ndb.Model.query(ancestor=key).iter(keys_only = True)) 

그러나 모델이 와일드 카드이어야한다 : 나는 처음

내 생각이 같은했다 ...이 기본 동작을 것입니다하지만 어떻게 든 그렇지 않은 가정 여러 클래스 ...

엔티티를 삭제할 때 BlobKeyProperties도 삭제하고 싶습니다.

@classmethod 
    def _post_delete_hook(cls, key, future): 
    # inform someone they have lost a friend 

나는 어쩌면뿐만 아니라 삭제 계단식 사용한다 :이를 위해 나는 에 대한 생각을했다? 비 구분 상위 쿼리의

답변

6

내가 계단식은 모든 자식 개체에 대한 삭제 사용하지 것이다 query class

ndb.delete_multi(ndb.Query(ancestor=key).iter(keys_only = True)) 

에서 쿼리를 작성합니다. 작업량이 많은 경우 작업에서 삭제를 실행하지 않는 한 훨씬 느립니다.

+0

고마워요! 그것은 CMS의 백엔드를위한 것이므로 관리 할 것이라고 생각합니다. 고아가 표시되지 않으므로 고아는 내 애플리케이션에서 유용하지 않습니다. –

+1

이 쿼리는 "지정된 조상과 모든 하위 항목을 검색합니다"라는 것을 기억하십시오. 의도가 * only * children을 삭제하는 것이라면주의하십시오. –

관련 문제