我们目前为员工提供库存系统。它包含 笔记本电脑,手机,还有符合人体工程学的椅子,冰箱或软件 许可证...管理员可以创建/读取/非常不同的东西 更新/删除。
完全基于管理界面完成版本后,我放弃了 因为它没有提供足够的灵活性。所以我卷了一个完整的 自定义版本,但我的口味有太多的代码...它是一个 要保持痛苦。
我遇到的一些问题包括:
允许管理员通过添加他们自己的项类型 接口,例如:笔记本电脑,电视,...所以基本上就像他们可以通过界面创建一组属性的Django模型。项目类型也是分层的,例如电视 和Laptop是ElectronicItem的子类,而ElectronicItem又是一个 Item的子类,......
polymorphism:列出所有项目时,应该知道 它们是什么类型,这是为了搜索/过滤列表 javascript并生成项目详细视图的网址。
通过Ajax更新一些属性,例如笔记本电脑有 许可证。在笔记本电脑的详细信息页面上,我有一个javascript“管理员” 将许可证关联/分离到该笔记本电脑。
所以我想知道是否有人建议使用什么!一世 特别想知道其中一个django CMSes应用程序可以帮助我, 因为这听起来像CMS可以提供的功能!我甚至想到了一个NOSql数据库......但这听起来像是复杂的解决方案。
实际上这不是我第一次面对Django的多态性问题,我还没有找到一个好的解决方案。所以我有点希望,他们是我完全错过的东西,有人可以向我展示光明!
答案 0 :(得分:3)
Satchmo project是基于django的电子商务解决方案,可以管理给定产品的不同产品和不同选项。也许你可以在那里找到一些灵感。
继承和多态管理的另一个很棒的工具是Django model utils项目,它提供了InheritanceManager
。
我在生产中使用,管理不同类型的产品(衬衫,夹克等),这真的很有帮助。
**编辑**
根据要求,继承的一个例子。
class Product(models.Model):
objects = InheritanceManager()
client = models.ForeignKey('clients.Client')
price = models.PositiveIntegerField()
class Shirt(Product):
color = …
class Pants(Product):
…
products = Product.objects.all().select_subclasses()
# products[0] can be a Shirt, and products[1] can be a Pants
请注意,由于this issue,我必须调整一些内容才能使代码与select_related
一起使用。
答案 1 :(得分:0)
好的......在撰写本文时,Django对此并不擅长。
像mongodb这样的无架构数据库是解决这个问题的好方法,而且Django根本不支持开箱即用。
所以我放弃了Django,用mongodb数据库重写了node.js
中的所有内容。