blog
blog copied to clipboard
Django设置伪外键(ForeignKey)
参考:
- https://docs.djangoproject.com/zh-hans/3.1/ref/models/fields/#django.db.models.ForeignKey.db_constraint
一、ForeignKey.db_constraint
设置伪外键的方法:将
ForeignKey.db_constraint
设置为False
。
ForeignKey.db_constraint 控制是否应该在数据库中为这个外键创建一个约束。默认值是 True,这几乎是你想要的;将其设置为 False 对数据完整性非常不利。话虽如此,下面是一些你可能想要这样做的情况:
- 你有无效的冗余数据
- 你正在共享你的数据库
如果将此设置为 False,访问一个不存在的相关对象将引发 DoesNotExist 异常。
二、设置伪外键实例:
from django.db import models
class OmCustomer(models.Model):
name = models.CharField(max_length=40)
age = models.IntegerField()
class OmPost(models.Model):
title = models.CharField(max_length=40)
content = models.CharField(max_length=140)
customer = models.ForeignKey(
to=OmCustomer,
on_delete=models.SET_NULL,
to_field='id',
db_constraint=False, # 设置伪外键:在数据库中,不会为这个外键创建一个约束
null=True)