我在這,我用一個型號有許多需要的所有實體和一些特定於兩個備選方案中的一個,就像在下面的例子中性能的情況經常型號:爲Expando VS空白的屬性
class Machine(ndb.Model):
#Properties for all machines:
price = ndb.FloatProperty()
model = ndb.StringProperty()
vendor = ndb.KeyProperty()
#...
#Properties exclusive to type A machines:
foo1 = ndb.StringProperty()
foo2 = ndb.StringProperty()
#Properties exclusive to type B machines:
bar1 = ndb.StringProperty()
bar2 = ndb.StringProperty()
從我所理解的,我可以採取兩種途徑之一。要麼我把它定義爲一個常規的ndb.Model,只留下一些沒有內容的屬性,或者我可以使用一個ndb.Expando模型,並提前設置固定屬性,並根據具體情況添加其他屬性。
據我所知,當您不知道您需要的屬性時,Expando Model很有用,但我事先知道所需的所有屬性(foo1,foo2,bar1,bar2)。我應該使用Expando還是使用常規的ndb.Model併爲每個實體留下一些屬性爲空?
感謝您的回答!如果Machine是StructuredProperty,我也可以這樣做嗎?我也有這種情況發生,完全像這樣,而不是Machine是一個完整的實體,它是一個StructuredProperty(一個更大的實體內的屬性)。在這種情況下,我仍然可以按照你的建議去做嗎? –
雖然最終的結果可能相似,但方法不同,各有優缺點。在嵌套重複屬性方面存在一些限制,並且對於嵌套的結構化屬性的項目的查詢在許多場景中無法按照您喜歡的方式工作。 –
在我的情況下,他們沒有太多數據,它只與實體相關,並且從我測試過的數據來看,它足以用於查詢目的。我的意思是有這樣的例子:class「Things」具有結構化屬性Machine有兩種類型:MachineA和MachineB。這是可能的還是應該避免它? –