Question

Given

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

Say I have a nested hierarchy

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

where a's parent is root, b's parent is a, c's parent is b etc.

Is there a simple way by which I could move node y from x to b such that z1 and z2 continue to remain children of y:

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

That would mean I simply change y's parent.

However, if that is not possible than it would require

  1. creating a new record ny = Category(parent=b, name=y) and
  2. recursively for each child of y creating a new record that has ny as a parent and
  3. than deleting y and its children.
Was it helpful?

Solution

The parent relationship is encoded in an entity's key, and the key is immutable once created, so no, you can't change the key of an existing entity. In order to do so, you need to reinsert all the relevant items with new keys.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top