【问题标题】:Can I have two structured properties with the same name if they are in different Models?如果它们位于不同的模型中,我可以拥有两个同名的结构化属性吗?
【发布时间】:2016-12-29 00:07:28
【问题描述】:

根据 Google NDB 文档,Model() 种类被认为是一个全局命名空间,所以我不应该有两个同名的 ndb 模型,即使在不同的文件中也是如此。尽管如此,结构化属性不是成熟的实体,它们没有密钥,如果我在控制台中搜索它们,它们不存在,而是其他实体的属性。考虑到这一点,我可以有类似下面的代码吗?

这在 file_A.py 中:

class Specifications(ndb.Model):
    #A list of Specifications

class Car(ndb.Model):
    specs = ndb.StructuredProperty(Specifications)

这在file_B.py中:

class Specifications(ndb.Model):
    #Another list of Specifications

class Bike(ndb.Model):
    specs = ndb.StructuredProperty(Specifications)

【问题讨论】:

  • 我会使用 CarSpecsBikeSpecs 来保持事情的清晰/简单 :)

标签: python google-app-engine google-cloud-datastore app-engine-ndb


【解决方案1】:

您可以完美地做到这一点,但请注意,最好只定义一次规格模型,以免造成混乱。但是...您还可以在每个文件上定义两个不同的 Specifications 模型。

【讨论】:

  • 它们会有不同的属性,所以它必须是两个不同的模型。所以我不能在不同的文件中有两个 Car 模型,但是我可以有两个 Specifications 模型,因为它是一个结构化的属性,对吧?
  • 是的,你可以。如果每个“规格”模型具有不同的属性,您可以这样做,因此每个模型都在不同的文件中使用其自己的属性进行定义。但请注意,如果您想从另一个文件中导入两个“规范”,则必须为它们起别名。
猜你喜欢
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多