博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django学习笔记(5)---ForeignKey
阅读量:6970 次
发布时间:2019-06-27

本文共 1216 字,大约阅读时间需要 4 分钟。

hot3.png

ForeignKey在Django中是Many-To-One类型,即有多个对象绑定到一个对象的意味

先来看例子

from django.db import modelsclass User(models.Model):    name = models.CharField(max_length=30)class Group(models.Model):    name = models.CharField(max_length=30)    owner = models.ForeignKey(User)    member = models.ManyToMany(User)

模型中如果有外键和多对多字段,创建的时候外键必须首先绑定,然后保存,才能添加多对多字段。

例如

from models import User,Group#第一种创建对象的方法必须调用save()函数,否则不会真正向数据库写入u1 = User()u1.name = 'ZhangSan'u1.save()#一次创建并写入数据库,与上面的等价u2 = User.objects.create(name='LiSi')g = Group()g.name = "My group"g.owner = u1g.save() #必须调用save函数写入数据库后才能添加多对多,否则Group对象在数据库中没有对应primary_key无法建立关联g.member.add(u2)

按如上代码,g对象与u1对象绑定,当调用u1.delete()时,g对象也会被删除!!!

此外,还有一种方法建立对象之间的关联

from django.db import modelsclass User(models.Model):    name = models.CharField(max_length=30)class Group(models.Model):    name = models.CharField(max_length=30)    member = models.ManyToMany(User,through='Friendship')class Friendship(models.Model):    #通过through属性建立了Group与User之间的关系,在Friendship中必须有两个外键与其绑定    owner = medels.ForeignKey(User)    group = medels.ForeignKey(Group)

这种方法比起前一种关系结构更明确,但是操作起来需要的语句更加多一些。即当User和Group的对象中有任意一个被删除,这种关系自动解除,虽然这里举的例子并不能很好诠释。

转载请注明出处,谢谢!

转载于:https://my.oschina.net/linktime/blog/106247

你可能感兴趣的文章
对素数的判断和素数个数的判断
查看>>
【iOS编程思想】ReactiveCocoa (6) 多次订阅一次请求
查看>>
Redis 集群原理与使用
查看>>
TP之msubstr()
查看>>
MySQL的MyISAM和InnoDB对比及优化
查看>>
mysql proxy、mysql-mmm实现读写分离高可用性
查看>>
星河时空尽头的我没理由放弃挨打的痛苦
查看>>
hibernate多对多关系
查看>>
一些比较优秀的代码总结
查看>>
bootstrap_04_列表
查看>>
WEB面试题
查看>>
w7无线网络密码破解
查看>>
Javascript正则表达式
查看>>
Java项目命名规范
查看>>
rhel6下dns配置
查看>>
浅析Java抽象类和接口的比较
查看>>
java架构师之路:推荐的15本书
查看>>
Vim学习笔记
查看>>
focus-hooks
查看>>
UINavigationBar添加自定义背景
查看>>