前言
前面学习了一对一查询,今天学习一下外键(ForeignKey)使用查询
models.py
在上篇的基础上,在添加一张银行信息。
将银行卡信息和Card表关联。
之后执行 makemigrations 和migrate,同步数据
python manage.py makemigrations
python manage.py migrate
shell模式新增数据
进入到manage.py文件目录,cmd进入命令行页面
输入:python manage.py shell
新增数据
先导入包
from ke25.models import Card,BankInformation
创建数据:
查询数据库:
BankInformation表
正向查询
根据Card的信息取查询BankInformation相关联的银行卡信息
cardinfo = Card.objects.get(card_id='0002')
反向查询_set
假如想通过“银行名称”反向查询银行关联的多少银行卡,并且能够查询每个银行卡的信息,当ForeignKey没设置related_name参数,默认是通过关联表的名称加_set去查询。
- 查询结果是QuerySet集合对象
- count()函数统计查询个数
- [0].card_id 下标取值,获取对应属性
related_name
Card的外键只有一个时,可以通过_set去查询到,当有多个外键时,就无法查询具体哪个外键了,这时候就需要加个related_name参数。related_name参数相当于给这个外键取了个别名,方便多个外键时候去识别。以下是新增数据和正向查询
当定义了related_name后”_set”这类查询就被related_name代替了,所以用”_set”会报错。
反向查询需要用到related_name参数,如下
nn=Card_Grade.objects.get(nub='黄金会员')