我正在尝试使用Django / PostgreSQL建立数据库,但我无法弄清楚这是否是我可以做的事情。我想在我的表中做的是拥有各种元素,每个元素都有它们的主键字段,但同时,在同一个表中,每个元素也有一个列,它具有一个外键约束引用这些元素的主键列表。所以它必须看起来像这样:
|_pk_|_x_|_y_|_dependencies_|
|pk1 |---|---| [pk2,pk3] |
|pk2 |---|---|--------------|
|pk3 |---|---|--------------|
我不明白的是,是否可以让外键列引用多个主键,因为在Django中如果我只需要引用同一个表,我只想说models.ForeignKey('self')并且它会自动引用同一个表的主键,但我需要多个主键(或者甚至是None,它实际上取决于项目)。
这可行吗?设计一种方法来进行相同的引用但是使用多个表会不会更好?
提前感谢您的帮助!
答案 0 :(得分:2)
您无法在Django的ForeignKey
中引用多个字段。
您是否考虑过使用ManyToManyField
?
它创建了一个中间表,允许对该元素进行任意数量的引用。
如果您不想要,您也可以使用CSV-Field(或1.8中新的postgres特定ArrayField),但必须自己进行约束验证......
答案 1 :(得分:0)
是。这是一个例子。
CONSTRAINT fk_t1_t2 FOREIGN KEY (refcol1, refcol2)
REFERENCES table2(col1, col2)