5

在经典的关系数据库中,我有下表:

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))

我正在尝试将此表转换为 Google App Engine 表。我的问题是字段 MotherId 和 FatherId。我尝试了下面的代码,但没有机会。Python 说它不知道对象类型 Person。

class Person(db.Model):
    mother = db.ReferenceProperty(Person)
    father = db.ReferenceProperty(Person)
    firstName = db.StringProperty()

有人知道我们如何在 Google App Engine 表中建模递归关系吗?我该如何解决 App Engine 的限制?

更新 我想稍微扩展一下问题......如果我想添加一组孩子怎么办?

children = db.SelfReferenceProperty(collection_name='children_set')
dad.children.append(childrenOne)

我试过这个,但它不起作用。知道我做错了什么吗?

谢谢!

4

1 回答 1

10

我认为你想要 SelfReferenceProperty 这里

class Person(db.Model):
    mother = db.SelfReferenceProperty(collection_name='mother_set')
    father = db.SelfReferenceProperty(collection_name='father_set')
    firstName = db.StringProperty()

或者,您可以将母亲和父亲关系放在不同的类中。

于 2009-06-02T06:12:46.363 回答