Google App Engine Datstore에서 레코드의 부모를 변경하는 쉬운 방법이 있습니까?
-
03-07-2019 - |
문제
주어진
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
부모님.
그러나 그것이 필요하지 않은 경우
- 새로운 레코드 만들기
ny = Category(parent=b, name=y)
그리고 - 각 어린이를 위해 재귀 적으로
y
새로운 레코드를 만들었습니다ny
부모로서 - 삭제하는 것보다
y
그리고 그 아이들.
해결책
학부모 관계는 엔티티의 키로 인코딩되며 키는 불행한 일단 만들어지지 않으므로 기존 엔티티의 키를 변경할 수 없습니다. 그렇게하려면 모든 관련 항목을 새 키로 다시 인스팅해야합니다.
제휴하지 않습니다 StackOverflow