【发布时间】:2009-09-03 14:32:54
【问题描述】:
我试图找出从一组非嵌套模型中派生嵌套菜单的最佳方法。给定这样的布局:
class Beverage(models.Model):
country = models.ForeignKey(Country,null=True,blank=True)
region = models.ForeignKey(Region,null=True,blank=True)
subregion = models.ForeignKey(SubRegion,null=True,blank=True)
in_stock = models.BooleanField()
...
生成的菜单将类似于:
France
Region 1
Subregion 1
Subregion 2
Region 2
Subregion 3
Subregion 4
Spain
....
如果菜单中没有无库存的饮料,则菜单中不应出现任何国家、地区或次区域。因为一个子区域总是属于一个区域,一个区域总是属于一个国家,所以我最初的做法是自己嵌套模型,并且只将 SubRegion 放在 Beverage 上。然后,区域和国家/地区将始终由饮料的子区域知道。不幸的是,有太多现实世界的例外情况无法实现这一点 - 葡萄酒有一个区域但没有一个子区域,等等。所以我将布局按上述方式展平。
现在的问题是如何从这个模型布局中导出菜单。看起来深度嵌套的查询集列表将成为可行的方法,但这似乎计算成本高且代码复杂。有没有更清洁的方法?
【问题讨论】:
标签: django django-models