Google App Engine Datstore에서 레코드의 부모를 변경하는 쉬운 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/808476

문제

주어진

class Category(db.Model):
   name = db.Stringproperty()

중첩 계층 구조가 있다고 말합니다

-root
 |-a
 | |-b
 |   |-c
 |-x
   |-y
     |-z1
     |-z2

어디 a부모의 부모입니다 root, b부모의 부모입니다 a, c부모의 부모입니다 b 등.

노드를 움직일 수있는 간단한 방법이 있습니까? y ~에서 x 에게 b 그렇게 z1 그리고 z2 계속해서 자녀를 유지하십시오 y:

-root
 |-a
 | |-b
 |   |-c
 |   |-y
 |     |-z1
 |     |-z2
 |-x

그것은 내가 단순히 변화한다는 것을 의미합니다 y부모님.

그러나 그것이 필요하지 않은 경우

  1. 새로운 레코드 만들기 ny = Category(parent=b, name=y) 그리고
  2. 각 어린이를 위해 재귀 적으로 y 새로운 레코드를 만들었습니다 ny 부모로서
  3. 삭제하는 것보다 y 그리고 그 아이들.
도움이 되었습니까?

해결책

학부모 관계는 엔티티의 키로 인코딩되며 키는 불행한 일단 만들어지지 않으므로 기존 엔티티의 키를 변경할 수 없습니다. 그렇게하려면 모든 관련 항목을 새 키로 다시 인스팅해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top