这是Django noob的一个问题,我的问题是这样的;
正常的外键和反向关系之间的区别是什么?区别是什么。我一直在想;
方法1
class State(models.Model):
name = models.CharField()
class Country(models.Model):
name = models.CharField()
state = models.ForeignKey(State) # normal foreignkey
方法2
class Country(models.Model):
name = models.CharField()
class State(models.Model):
name = models.ForeignKey(Country) # reverse relation
方法1和方法2的主要区别是什么以及何时使用。
这基本上是一个与数据库相关的问题,我鼓励您进一步阅读
Django中的外键关系在数据库设计中转化为1对多关系。
在你的例子和现实世界中,一个州只能有一个国家和一个国家。但是一个国家可以有无限(或n(个州。
因此,在我们的国家模式中,我们不可能有无限的领域来代表所有的州。
我们能做的就是告诉每个州他们属于哪个国家
所以这是正确的做法。
class Country(models.Model):
name = models.CharField()
class State(models.Model):
name = models.CharField()
country = models.ForeignKey(Country)
在你写的第一个方法中,每个国家可以有一个州,但每个州可以属于多个国家。