我有一个主要模型:
ToolBox
和其他三个模型:
Hammer
Nail
Plier
显然,ToolBox可以包含Hammers,Nails或Pliers的任意组合。
使用Django,这种动态关系的ORM代表是什么?请记住,这些模型中的每一个都可以拥有自己丰富的属性集,因此简单的类型字段将无法完成工作。我也想知道Django中的管理界面如何适用于这种动态类型的东西。
答案 0 :(得分:1)
我不确定你的动态是什么意思,我认为你的例子非常典型。
但无论如何,为了避免这种情况:
Toolbox
many2many(Hammer)
many2many(Nail)
etc... (add new m2m field every time you add another tool class)
我会这样做:
Toolbox
Hammer
foreignkey(Toolbox)
Nail
foreignkey(Toolbox)
这将使事情更容易实现(使用toolbox.hammer_set等)。 如果Hammer,Nail等有一些共同的字段,你也可以定义一个包含所有公共字段的抽象基类(例如工具)。