Google App Engine Expando Class için uygulamalar nelerdir? Ve bununla ilgili iyi uygulamalar nelerdir?Expando Class, Google App Engine Uygulamalarında kullanıldığında?
cevap
Expandos'un iki yaygın kullanımı, kısmen sabit şemalar ve deleting eski özelliklerdir.
Genellikle, Expando'yu, varlıklarda biraz farklı özelliklere gereksinim duyan türlerdeyken kullanırım; Başka bir deyişle, “kısmen” dinamik bir şemaya ihtiyacım olduğunda. Bir kullanım vakası, bazı ürünlerin sıvı olduğu (düşünce suyu), bazılarının fiziksel birimler (DVD'ler) ve bazılarının “öteki” (düşünce unu) olduğu siparişleri alan bir uygulamadır. Ürün kodu, fiyat ve miktar gibi bazı alanlar her zaman gereklidir. Ancak, miktarın nasıl hesaplandığına dair detaylar da gerekiyorsa?
Genelde, sabit şema çözümü, kullanabileceğimiz tüm değişkenler için bir özellik eklemektir: ağırlık, boyut, stokumuzun ağırlıklarından önce ve sonra vb. Bu berbat. Her varlık için diğer alanların çoğu gerekli değildir.
class Order(db.Model):
# These fields are always needed.
item_code = db.StringProperty()
unit_of_measure = db.StringProperty()
unit_price = db.FloatProperty()
quantity = db.FloatProperty()
# These fields are used depending on the unit of measure.
weight = db.FloatProperty()
volume = db.FloatProperty()
stock_start_weight = db.FloatProperty()
stock_end_weight = db.FloatProperty()
Expando ile daha iyisini yapabiliriz. Miktarı nasıl hesapladığımızı anlatmak için unit_of_measure
kullanabiliriz. Miktarı hesaplayan fonksiyonlar dinamik alanları belirleyebilir ve bu metodun bilgisini okuyan fonksiyonlar neyi arayacağını bilir. Ve varlığın bir dizi gereksiz özelliği yoktur.
class Order(db.Expando):
# Every instance has these fields.
item_code = db.StringProperty()
unit_of_measure = db.StringProperty()
unit_price = db.FloatProperty()
quantity = db.FloatProperty()
def compute_gallons(entity, kilograms, kg_per_gallon):
# Set the fixed fields.
entity.unit_of_measure = 'GAL'
entity.quantity = kilograms/kg_per_gallon
# Set the gallon specific fields:
entity.weight = kilograms
entity.density = kg_per_gallon
Bir metin veya blob özelliğini kullanarak ve ona 'öteki' değerinin bir dicti seri ile benzer bir sonuç elde edebiliriz. Expando temelde sizin için 'otomatikleştirir'.
- 1. Google App Engine
- 2. Google App Engine
- 3. Google App Engine: get_or_create()?
- 4. Google-app-engine NDB
- 5. Go, Google App Engine
- 6. Google App Engine modifyThreadGroup sorun
- 7. Google app engine TürError issue
- 8. wordpress google app engine uyumluluğu
- 9. Google app engine dev_appserver.py sorunları
- 10. Google App Engine kopyalama gönderen
- 11. Google App Engine | Python | APP.YAML
- 12. Google App Engine (Python) İthalat
- 13. Google App Engine PDF dönüştürücü
- 14. Google App Engine Editörde kurulum
- 15. Google App Engine vs Heroku
- 16. Google App Engine: JSON modülü
- 17. Google App Engine sürekli olarak
- 18. Google App Engine/_ah/sağlık
- 19. App-Engine,
- 20. Python ve Google App Engine kullanarak çerezler
- 21. Google App Engine için Çerçeve Seçimi/Önerileri
- 22. Google App engine Datastore'dan varlık nasıl silinir?
- 23. Google App Engine - Kullanıcı girişi nasıl hatırlanır?
- 24. Google App Engine için maksimum kod boyutu
- 25. Google App Engine Hatası 503 - Hizmet Kullanılamıyor
- 26. Google App Engine dağıtımı smtp posta argümanlar
- 27. Google App Engine Uzaktan API + OAuth
- 28. Google App Engine Datastore Faceted Arama
- 29. Google App Engine ve anahtar/değer mağazaları
- 30. Google App Engine İhtiyaçları Dizini Hatası
Anahatta gördüğünüz durumun başka bir seçeneği de PolyModel kullanmaktır. –
Yapabilirsiniz; ancak varyasyonları ele almak için tonlarca model oluşturup içe aktarabilirsiniz (bu tür bir örnek için). Sıvılarla ilgilenirim ve bir lot lotu (uygulamamız 12'yi kullanır) vardır. –
Expando modelinin nedenlerinin en başarılı toplamalarından biri. Teşekkürler! – Jon