Django和动态模型关系

时间:2012-10-13 19:15:19

标签: django django-models

我有一个主要模型:

ToolBox

和其他三个模型:

Hammer
Nail
Plier

显然,ToolBox可以包含Hammers,Nails或Pliers的任意组合。

使用Django,这种动态关系的ORM代表是什么?请记住,这些模型中的每一个都可以拥有自己丰富的属性集,因此简单的类型字段将无法完成工作。我也想知道Django中的管理界面如何适用于这种动态类型的东西。

1 个答案:

答案 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等有一些共同的字段,你也可以定义一个包含所有公共字段的抽象基类(例如工具)。