14DjangoORM一对一关系映射的模型类创建及数据创建和查询
1一对一模型类Models的创建:
#作者
class Author(models.Model): name = models.CharField('姓名',max_length=11,default='')
#作者的妻子 class Wife(models.Model): name = models.CharField('姓名',max_length=11) author = models.OneToOneField(Author,on_delete=models.CASCADE)
2一对一外键关系的表创建数据:
方法1:用外键名author关联主键的实例化对象a1,创建数据
(venv) D:\PycharmProjects\mysite3>python manage.py shell >>> from bookstore.models import * >>> a1 = Author.objects.create(name='wang') >>> w1 = Wife.objects.create(name='wangfuren',author=a1)
方法2:用外键字段名author_id指定主键具体值a2.id,创建数据
>>> a2 = Author.objects.create(name='guo') >>> w2 = Wife.objects.create(name='guofuren',author_id=a2.id)
3一对一的数据查询:
方法1正向查询(直接通过外键属性查询):
>>> from bookstore.models import * >>> a1 = Author.objects.create(name='wang') >>> w1 = Wife.objects.create(name='wangfuren',author=a1) >>> w1.author.name 'wang'
方法2反向查询(1对1):
没有外键属性的一方,可以调用反向属性查询到关联的另一方
当反向引用不存在时则会触发异常
>>> from bookstore.models import * >>> a1 = Author.objects.create(name='wang') >>> w1 = Wife.objects.create(name='wangfuren',author=a1) >>> a1.wife.name 'wangfuren'
备注:级联删除on_delete字段选项:
1,models.CASCADE:共生死模式,一旦执行删除,所有外键ForeignKey对象也跟着一并删除 2,models.PROTECT:如果有数据和你关联,我就不让你删 3,SET_NULL:只要你删除,我就把和你关联的外键设置成null;前提时需要指定null=True 4,SET_DEFAULT:给外键设置一个默认值,我让你删,你删除后,我就把外键设置成默认值

浙公网安备 33010602011771号