Django中的OneToOneField和ForeignKey有什么区别?
当前回答
此外,OneToOneField可用作主键以避免键重复。可能没有隐式/显式autofield
models.AutoField(primary_key=True)
但是使用OneToOneField作为主键(假设UserProfile模型为例):
user = models.OneToOneField(
User, null=False, primary_key=True, verbose_name='Member profile')
其他回答
此外,OneToOneField可用作主键以避免键重复。可能没有隐式/显式autofield
models.AutoField(primary_key=True)
但是使用OneToOneField作为主键(假设UserProfile模型为例):
user = models.OneToOneField(
User, null=False, primary_key=True, verbose_name='Member profile')
OneToOneField(例如:一辆车有一个车主) ForeignKey(OneToMany)(例如:一个餐厅有很多项目)
ForeignKey允许你接收子类,它是另一个类的定义,但OneToOneFields不能这样做,它不能附加到多个变量
OneToOneField:如果第二个表与
table2_col1 = models.OneToOneField(table1,on_delete=models.CASCADE, related_name='table1_id')
Table2将只包含一条对应于table1的pk值的记录,即table2_col1将有一个等于表pk的唯一值
table2_col1 == models.ForeignKey(table1, on_delete=models.CASCADE, related_name='table1_id')
Table2可以包含多条与table1的pk值相对应的记录。
OneToOneField(一对一)在面向对象中实现了组合的概念,而ForeignKey(一对多)则与聚合有关。
推荐文章
- 如何直接从测试驱动程序调用自定义的Django manage.py命令?
- 在Python Django中运行单元测试时,如何禁用日志记录?
- Django CSRF检查Ajax POST请求失败
- 如何重命名一个模型字段使用南方?
- Django修复Admin复数
- 如何在Django上列出urlpatterns(端点)?
- Django自引用外键
- Django:“projects”vs“apps”
- 我如何在Django中过滤一个DateTimeField的日期?
- 如何在Django中序列化一个模型实例?
- Django更改默认的runserver端口
- 如何限制Django模型中数值字段的最大值?
- 获取对象的Django管理url
- Django可选url参数
- 我如何提高一个响应禁止在django