1

我有一个主要模型:

ToolBox

和其他三个模型:

Hammer
Nail
Plier

显然,工具箱可以包含锤子、钉子或钳子的任意组合。

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

4

1 回答 1

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 等有一些共同的字段,您还可以定义一个包含所有共同字段的抽象基类(例如 Tool)。

于 2012-10-13T20:44:36.850 回答