Я хочу реализовать структуру категорий, которая работает с i18n.Поскольку GAE имеет встроенную db.CategoryProperty
, но она не реализует подкатегории, и кажется, что я использую свойство категории как объект списка со своими моделями.
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 более удобное решение для этого?Какие еще классы имеет движок приложений / django, который может обеспечить работающую реализацию?Должен ли я вместо этого делать свой выбор:
choices = [ (1, _('Vehicles')), (2, _('Cars')), (3, _('Bicycles')), (4, _('Motorcycles')) ]
category=db.CategoryProperty(choices('0','1','2','3','4',default='1',verbose_name="Category")