【发布时间】:2021-01-28 20:45:53
【问题描述】:
我有一件可以包含多种颜色的衬衫,以及可以包含多种衬衫的多种颜色。通常我会用以下方式表达它:
在 django 我有多对多 (https://docs.djangoproject.com/en/3.1/topics/db/examples/many_to_many/) 示例:
publications = models.ManyToManyField(Publication)
-- 我可以创建包含 2 列(没有“ID”主键)的表“Item_colors”并使用复合键根据我的图表设计模型:
class Item_colors(models.Model):
class Meta:
unique_together = (('cloth_item_id', 'color_id'),)
cloth_item_id = models.ForeignKey(Cloth_item, on_delete=models.CASCADE)
color_id = models.ForeignKey(Color, on_delete=models.CASCADE)
在数据库上下文中如何处理多对多关系,它是否会产生更好的性能?
编辑:https://code.djangoproject.com/wiki/MultipleColumnPrimaryKeys 不避免使用主键来支持组合键保存列 :( 至少现在..
【问题讨论】:
-
A
ManyToManyField创建一个中间表,但有一个主键。在 Django 中,每个模型都有一个主键。 -
谢谢 Willem,我假设中间表类似于我的“Item_colors”表?
标签: django postgresql django-models database-design relational-database