我想實現一個與i18n一起工作的類別結構。由於GAE具有內建的db.CategoryProperty
,但它沒有實現子類別,並且似乎使用category屬性,因爲它是我的模型的列表對象。如何實現類別系統
class Vehicles(GeoModel,search.SearchableModel):
title=db.StringProperty(verbose_name="title")#required
category=db.CategoryProperty(choices('0','1','2','3','4',default='1',verbose_name="Category")
...
並非所有車輛都有手動或自動型變速箱,但汽車當然可以。所以,我可以添加另一個實例變量,gearbox = ...
但因爲這會對大多數情況下沒有意義,我應該避免的實施,並與繼承做到這一點,而不是:
class Cars(Vehicles):
gearbox=db.CategoryProperty(choices('0','1','2','3','4',default='1',verbose_name="Gearbox"
mileage=db.CategoryProperty(choices('0','1','2','3','4','5',default='1',verbose_name="Mileage"
fuel=db.CategoryProperty(choices('0','1','2','3','4',default='1',verbose_name="Fuel"
是與繼承最好在剛添加子類別的解決方案實例變量作爲基類中的實例變量?如果我使用繼承,將重新分類對象仍然工作嗎?我怎樣才能實現這些選擇,以便使用i18n迭代類別?我的模板目前看起來像:
{% load i18n %}
<select name="cg" id="cat" class="category">
<option value='' style='background-color:#dcdcc3' id='cat1' >-- {% trans "VEHICLES" %} --</option>
<option value='2' {% ifequal "2" cg %} selected="selected" {% endifequal %} id='cat2' >{% trans "Cars" %}</option>
...
django是否有更方便的解決方案呢? app engine/django還有哪些類可以實現工作實現?我應該做我的選擇是這樣,而不是:
choices = [ (1, _('Vehicles')), (2, _('Cars')), (3, _('Bicycles')), (4, _('Motorcycles')) ]
category=db.CategoryProperty(choices('0','1','2','3','4',default='1',verbose_name="Category")
我沒有使用Django一段時間所以不會回答,但你可能想看看[Expando](http://code.google.com/ appengine/docs/python/datastore/expandoclass.html)或[PolyModel](http://code.google.com/appengine/docs/python/datastore/polymodelclass.html)類。 –