class Plans(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=255)
plan_type = models.CharField(max_length=255)
class Order(models.Model):
id = models.IntegerField(primary_key=True)
selected_plan_id = models.IntegerField(primary_key=True)
Order
的selected_plan_id
为Plans
的id
。我应该向哪个模型添加外键?如何?
首先有一些不好的方式来指出:
- 两个字段不能是表中的主键
- 也是django默认的在每个表中包含主键
id
,所以不需要添加id
字段。
你应该这样做:
class Order(models.Model):
selected_plan_id = models.ForeignKey(Plans, on_delete=models.CASCADE)
您正在寻找的解决方案
class Order(models.Model):
id = models.IntegerField(primary_key=True)
selected_plan_id = models.ForeignKey(Plans, on_delete=models.CASCADE)
使用模型的目的。级联是当被引用的对象被删除时,也要删除对它有引用的对象。另外,我不建议你在你的属性中添加'id'关键字,django会自动添加。如果你像这样在属性后面加上'id'关键字,你会在表中看到'selected_plan_id_id'列。
class Order(models.Model):
id = models.IntegerField(primary_key=True)
selected_plan_id = models.IntegerField(primary_key=True)
Plain= models.ForeignKey(Plain)
检查表的依赖性,在得到一个键作为外键之后,就像这个键一样,plain不依赖于顺序。但顺序取决于计划。