En una base de datos relacional clásico, que tiene la siguiente tabla:relación recursiva con Google App Engine y BigTable
CREATE TABLE Person(
Id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
MotherId int NOT NULL REFERENCES Person(Id),
FatherId int NOT NULL REFERENCES Person(Id),
FirstName nvarchar(255))
Estoy tratando de convertir esta tabla en una tabla de Google App Engine. Mi problema es con los campos MotherId y FatherId. Probé el código a continuación, pero no hay oportunidad. Python dice que no conoce el tipo de objeto Persona.
class Person(db.Model):
mother = db.ReferenceProperty(Person)
father = db.ReferenceProperty(Person)
firstName = db.StringProperty()
¿Alguien sabe cómo podemos modelar una relación recursiva en una tabla de Google App Engine? ¿Cómo podría evitar la limitación de App Engine?
ACTUALIZACIÓN Quiero expandir el problema un poco ... ¿Qué pasa si quiero agregar una colección de niños?
children = db.SelfReferenceProperty(collection_name='children_set')
dad.children.append(childrenOne)
Intenté esto y no funciona. ¿Alguna idea de lo que estoy haciendo mal?
Gracias!
También tendrá que establecer la propiedad COLLECTION_NAME para evitar la 'Clase La persona ya tiene person_set propiedad' de error: madre = db.SelfReferenceProperty (COLLECTION_NAME = 'mother_set') padre = db.SelfReferenceProperty (COLLECTION_NAME =' father_set ') – robertc
No sabía nada de eso. Editado, gracias :) – NicDumZ
Esto es realmente genial! No sabía sobre eso. ¿Cómo podría modelar una colección de niños? hijos = db.SelfReferenceProperty (COLLECTION_NAME = 'children_set') dad.children.append (childrenOne) yo tratamos de esto y no funciona. :( – Martin