我在上为Django应用程序编写一些单元测试。测试通过调用init_datastore_v3_stub来使用数据存储存根,并在其中存储一些测试数据。对于简单的模型,这很好,但是当我存储作为模型B子类的模型A时,只有当我以A的形式查询模型时,我才会得到结果。示例代码:
class A(db.polymodel.PolyModel):
...
class B(A):
....
B().put()
print A.all().count() # prints 1
print B.all().count() # prints 0请注意,在生产中,两条生产线都会打印1。有什么建议吗?
更新:问题似乎与数据库本身无关,而与PolyModel实现有关。我注意到B._entity并不像它应该包含的那样包含'class'值,而是包含'_class'。看上去:
print B._entity # prints {... '_class'=[u'A', u'B'] ...}这就解释了我得到的结果。当我手动设置'class'值时,一切都正常:
b = B()
b._entity['class'] = b._entity['_class']
b.put()
print B.all().count() # prints 1当我发现问题的原因时,我将继续在这里进行调查和更新。
发布于 2013-11-21 16:10:29
我自己找到了解决方案,这是我的代码中的一个错误,在这个错误中,我意外地将每个属性的name属性重写为字段的类成员名,这是PolyModel的class属性的_class。这是在为测试创建模拟模型的过程中发生的,这就是为什么我在生产中没有这个问题。
https://stackoverflow.com/questions/20121230
复制相似问题