Exemplo n.º 1
0
book.heroinfo_set.all(
)  # 查处属于该书本的所有英雄(heroinfo_set在模型中没有定义,是由多方 定义外键的时候 一的方自动生成的关系字段)

# 2.多查一:查询编号为1的英雄出自的书籍
hero = HeroInfo.objects.get(id=1)  # 获取英雄对象
hero.hbook  # 定义有关系字段 直接 使用      没有 .first()
"""内联查询/关联过滤查询 重点"""
# 想要查谁,就以谁的模型名开头
# 1.多查一:查询书籍中人物的描述包含"降龙"的书籍
BookInfo.objects.filter(
    heroinfo__hcomment__contains='降龙')  # 多查一,filter里的条件 是用类名小写
# 2.一查多:查询书名为"天龙八部"的所有人物信息
HeroInfo.objects.filter(hbook__btitle='天龙八部')
"""修改"""
# 修改 需要对象.save() 保存到数据库
book = BookInfo.objects.get(btitle='西游记')
book.btitle = '西游记后传'
book.save()
# 修改 update 更新 直接保存数据库
BookInfo.objects.filter(btitle='第二版').update(btitle='第二版<<真的第二先上线>>',
                                             bread=30,
                                             bcomment=40)
"""删除"""
# 修改 delete  直接保存数据库
book = BookInfo.objects.get(
    id=6)  # 错误写法:book = BookInfo.objects.get(id=6).delete()
# base.py里Model类的delete, 先得到对象 再使用对象的实例
book.delete()  # 因为get获取得到的是 对象 不是查询集 不能 进行过滤filter操作
# query.py里Queryset类的的delete
BookInfo.objects.filter(id__gte=5).delete()
Exemplo n.º 2
0
# 打印b2 的 btitle
>>> b2.btitle
'天龙八部'
# 重新定义 b2 的 btitle
# >>> b2.btitle = "机器猫"
# 存储后即完成了对数据表中数据的修改
>>> b2.save()
# 创建一个新的对象 b3
>>> b3 = BookInfo()
>>> b3.btitle = "百年孤独"
>>> b3.bpub_date = date(1970, 10, 10)
>>> b3.save()
# .objects.all() 可以获取当前数据表中的所有条目
# >>> b1 = BookInfo.objects.all()
# delete 可以用于删除数据表中的数据,删除后无须save()即生效
>>> b3.delete()

# 创建一个英雄对象
>>> h = HeroInfo()
>>> h.hname = "段誉"
# 英雄的性别已经设置了默认值,此处不设置也可以
>>> h.hgender = False
>>> h.hcomment = "六脉神剑"
# 英雄所在的书籍对应 b2 对象所在的书籍 即 "天龙八部"
>>> h.hbook = b2
>>> h.save()
# 获取 数据表中id为1的数据
>>> h3 = HeroInfo.objects.get(id=1)
>>> h3.hname
'段誉'
# 获取 h3 对应的书籍的id