学习笔记24 重点
使用 ajax时候 不要用 render 因为render会返回整个页面的字符串
request.session.clear() 删除·session
应用场景:
注销、
model.user.objects.create(fk=obj)
boy = models.UserInfo.objects.filter(id=1,gender=1).first()
girl = models.UserInfo.objects.filter(id=4,gender=2).first()
models.U2U.objects.create(b=boy,g=girl)
传递对象的话 会自动将对象的id 解析给关系表的id
连表分为三大类型:
1.男女表 各自新建一个类 分散的连表
可以给外键加别名,也可以不加 通过 relation_name
正向操作:
通过对象: 对象.外键.字段
通过values: 外键__字段
反向:
通过对象:
非外键对象.外键对象小写名字__set.all()
通过values:
对象__字段
2. 男女表 在同一个类
通过对象: 对象.外键别名.all()
3 通过manytomany 自身创建一个关联表
注意点:
1 首先在关联表 要人为规定列 属于哪个对象 例如 from_userinfo_id 属于男生 反之
2
例如 男生查询与自己有关联的对象 则 直接通过 【关联表名】查询即可 注意【关联表名】是第二张表的名字
result = model.userinfo.object.filter(id=1).first() 先查询出该男生
obj = result.m.all() 通过表名查询与自己有关联的对象
for i in obj:
print i.nickname 这里不需要跨表 因为这个表就是建立在userinfo上面 直接查询即可
例如 女生查询与自己关联的对象 则需要通过 【表名】查询即可 注意 【表名】 指的是创建信息的表名即自身的表名
result = model.userinfo.object.filter(id=2).first() 先查询出该女生
obj = result.userinfo_set.all() 通过小写的表名查询与自己有关联的对象 这里的_set 是句柄
for i in obj:
print i.nickname
反向查询之流程: