在Django中,可以使用字符串引用稍后定义的模型:
class A(models.Model):
b = models.ForeignKey('B')
class B(models.Model):
pass
如何使用Google App Engine db.Model
执行此操作?我试过了
class A(db.Model):
b = db.ReferenceProperty('B')
class B(db.Model):
pass
无济于事。我应该在A?
之前转发声明B类答案 0 :(得分:1)
你不能把" B"在一个字符串中。它应该是:
class A(db.Model):
b = db.ReferenceProperty(B)
class B(db.Model):
pass
答案 1 :(得分:1)
使用ndb
class A(ndb.Model):
b = ndb.KeyProperty('B')
class B(ndb.Model):
pass
查找A的所有实例,引用B
A.query(A.b == somekey_for_b)
这可能是B的一种方法,它相当于一个db集合,但不是自动的,也没有集合集名称冲突的问题
或者,如果您必须坚持使用db
,那么要么更改类定义的顺序,要么只使用db.Model
作为引用属性定义的类型而不是实际的类。它仍然可以工作,它不会在更新时检查特定的种类。
您可以通过提供自己的验证方法验证是否提供了正确的类型