Skip to main content
 首页 » 编程设计

python之GAE db.ReferenceProperty 自引用

2025年05月04日20jillzhang

是否可以通过db.ReferenceProperty引用self,是否可以构造一个列表?

例如,我有一个 User 类,我想为他/她的 friend 提供一个引用 User 类的属性?

我目前正在使用 Python。

编辑:

所以如果我有这个类:

class Node(db.Model): 
    name = db.StringProperty(required=True) 
    neighbour = db.SelfReferenceProperty(collection_name="neighbours") 
 
node1 = Node(name="node1") 
node2 = Node(name="node2") 
node1.neighbour = node2 
node2.neighbour = node1 
node1.put() 
node2.put() 

我可以通过 node1.neighbours 和 node2.neighbours 访问其他节点的列表吗?

或者我应该这样做:

class Node(db.Model): 
    name = db.StringProperty(required=True) 
    neighbour = db.ListProperty(Node) 
 
node1 = Node(name="node1") 
node2 = Node(name="node2") 
node1.node = [node2] 
node2.neighbour = [node1] 
node1.put() 
node2.put() 

另外,我如何能够添加/删除/修改上述两个示例中的邻居列表?

谢谢

请您参考如下方法:

Yes .

class SelfReferenceProperty(verbose_name=None, collection_name=None, ...)

A reference to another model instance of the same class. See ReferenceProperty.

Value type: db.Key (see above)