如何实现分类系统

2024-04-27 18:09:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想实现一个与i18n一起工作的类别结构。因为GAE具有内置的^{cd1>}但是它没有实现子类别,而且我似乎在使用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") 
...

并非所有的车辆都有手动或自动变速箱,但汽车当然有。因此,我可以添加另一个实例变量^{{cd2>},但是由于这对于大多数实例没有意义,所以我应该避免实现,而使用继承来代替:

^{pr2}$

继承的解决方案是否比在基类中添加子类别的实例变量作为实例变量更可取?如果我使用继承,重新整合对象是否仍然有效?我如何实现这些选择,以便它使用i18n迭代类别?我的模板当前看起来如下:

^{pr3}$

django有更方便的解决方案吗?appengine/django还有哪些其他类可以实现一个有效的实现?我应该这样做吗:

^{pr4}$

Tags: 对象django实例nameverbosedbtitle解决方案
1条回答
网友
1楼 · 发布于 2024-04-27 18:09:27

CategoryProperty只是一个具有语义名称的StringProperty:当它被序列化为XML时,它使用不同的标记名。真的,没什么不同的。在

最后一个代码片段应该可以工作,但是为什么要依赖整数索引呢?如果有一天你更改订单,可能会有问题。你可以用口述代替:

choices = {
    'vehicles': _('Vehicles'),
    'cars': _('Cars'),
    'bicycles': _('Bicycles'),
    'motorcycles': _('Motorcycles')
}
category = db.CategoryProperty(choices=choices.keys(), default='cars',
                               verbose_name="Category")

相关问题 更多 >