如何按ReferenceProperty模型的名称进行筛选?

2024-04-20 07:09:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下3门课:

class Locality(db.Model):
  location = db.ReferenceProperty()

class Organisation(db.Model):
  locality = db.ReferenceProperty(Locality)

class Position(db.Model):
  locality = db.ReferenceProperty(Locality)

你知道吗地点属性是对组织或位置对象的引用。 我需要过滤的地方,并获得所有的项目与组织的参考。你知道吗

我已经试过了,但没用:

Locality.all().filter("location =",Organisation)

如有任何建议,我们将不胜感激。你知道吗


Tags: 项目对象dbmodel属性地方positionlocation
3条回答

在此行中:

Locality.all().filter("location =", Organisation)

你应该传递一个组织实例,而不是类本身,例如:

org = Organisation.get(some_org_key)
Locality.all().filter("location =", org)

我更喜欢Abdul的方法而不是Drew的回答(尽管他正确地回答了你的具体问题)。我不知道这里所有的运动部件,但我怀疑你想用一点不同的方式来建模,也许是使用PolyModel和一些去规范化。我的意思是,只要看看这四个类之间的关系,我就会看到很多简单查询的去重构过程。你知道吗

class Locality(db.Model):
  location = db.ReferenceProperty()

class Organisation(db.Model):
  locality = db.ReferenceProperty(Locality,collection_name='org')

class Position(db.Model):
  locality = db.ReferenceProperty(Locality,collection_name='pos')

现在每个locality对象都有一个loc属性,它只是一个组织的集合。你知道吗

要了解有关建模的更多信息,请通过以下blog

相关问题 更多 >