一、FK关联

FK关联
url.py里
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index.html$', views.index),
] views.py里
from django.shortcuts import render,HttpResponse
from app01 import models
def index(request):
zgl = models.UserInfo.objects.filter(username='zgl',gender=1).first() # 拿到要查询的对象 result = zgl.girls.all() # 去U2U里拿到所有的b_id
for u in result:
print(u.g.nickname) # 拿到b_id所对应的.g的女孩的nickname return HttpResponse('successfully done') models.py里
from django.db import models class UserInfo(models.Model):
nickname = models.CharField(max_length=16)
username = models.CharField(max_length=16)
passwd = models.CharField(max_length=64)
gender_choice = (
(1,'男'),
(2,'女'),
)
gender= models.IntegerField(choices=gender_choice) # 反向查询时
# related_query_name
# obj对象男.U2U.girls_set.all()
# obj对象女.U2U.boys_set.all()
# related_name
# obj对象男.girls.all()
# obj对象女.boys.all() class U2U(models.Model):
g = models.ForeignKey('UserInfo',related_name='boys')
b = models.ForeignKey('UserInfo',related_name='girls') M2M自关联特性:
models.py里
from django.db import models class UserInfo(models.Model):
nickname = models.CharField(max_length=16)
username = models.CharField(max_length=16)
passwd = models.CharField(max_length=64)
gender_choice = (
(1,'男'),
(2,'女'),
)
gender= models.IntegerField(choices=gender_choice)
m = models.ManyToManyField('UserInfo') # 自己关联自己 views.py里
def index(request):
#查女生
girl = models.UserInfo.objects.filter(id=4,gender=2).first() # 拿到要查询的对象
result = girl.userinfo_set.all()
for row in result:
print(row.nickname) return HttpResponse('successfully done') obj = models.UserInfo.objects.filter(id=1).first()
# 对于from_userinfo_id 相当于正向查询通过.m的方式
obj.m => select xx from xx where from_userinfo_id = 1 # 对于to_userinfo_id 相当于反向查询通过.userinfo_set的方式
obj.userinfo_set => select xx from xx where to_userinfo_id = 1 定义:
# 前面列:男生ID
# 后面列:女生ID 应用:
# 男生对象
obj = models.UserInfo.objects.filter(id=1).first()
# 根据男生ID=1查找关联的所有的女神
obj.m.all() # 女生
obj = models.UserInfo.objects.filter(id=4).first()
# 根据女生ID=4查找关联的所有的男生
obj.userinfo_set.all()
问题:
当打不开页面,发生404错误时
url(r'^index.html$/', love.index) # index.html$后边不要加反斜杠

django上课笔记5-FK关联的更多相关文章

  1. django上课笔记7-jQuery Ajax 和 原生Ajax-伪造的Ajax-三种Ajax上传文件方法-JSONP和CORS跨域资源共享

    一.jQuery Ajax 和 原生Ajax from django.conf.urls import url from django.contrib import admin from app01 ...

  2. django上课笔记4-复习数据库操作-复习模板-Seccion-详细cookie和session的区别

    一.复习数据库操作 字段类型 字符串 EmailField(CharField): IPAddressField(Field) URLField(CharField) SlugField(CharFi ...

  3. django上课笔记1-目录介绍-路由系统-ORM操作

    一.Django目录介绍 django-admin startproject mysite # 创建名为mysite的项目 cd mysite # 切换到该目录下 python manage.py s ...

  4. django上课笔记6-MVC,MTV架构-中间件-初识Form组件

    一.MVC,MTV架构 models(数据库,模型) views(html模板) controllers(业务逻辑处理) --> MVC models(数据库,模型) templates(htm ...

  5. django上课笔记3-ORM补充-CSRF (跨站请求伪造)

    一.ORM补充 ORM操作三大难点: 正向操作反向操作连表 其它基本操作(包含F Q extra) 性能相关的操作 class UserInfo(models.Model): uid = models ...

  6. django上课笔记2-视图CBV-ORM补充-Django的自带分页-Django的自定义分页

    一.视图CBV 1.urls url(r'^login.html$', views.Login.as_view()), 2.views from django.views import View cl ...

  7. Django 学习笔记(二)

    Django 第一个 Hello World 项目 经过上一篇的安装,我们已经拥有了Django 框架 1.选择项目默认存放的地址 默认地址是C:\Users\Lee,也就是进入cmd控制台的地址,创 ...

  8. Django学习笔记(2)——模型,后台管理和视图的学习

    一:Web投票示例 本节我们首先从全局范围再复习一下Django的概念,让自己对Django的设计理念, 功能模块,体系架构,基本用法有初步的印象. Django初始的详细博客内容:请点击我 该应用包 ...

  9. Django学习笔记二

    Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...

随机推荐

  1. 更改Tomcat命令行窗体标题

     在windows下启动多个tomcat时.不好区分哪个tomcat相应哪个服务,能够通过下面方法设置Tomcat命令行窗体的标题: 1.在%tomcat_home%\bin\catalina.b ...

  2. BUPT复试专题—中位数(2014-2)

    题目描述 给定一个长度为N的非降数列,求数列的中位数.中位数:当数列的项数N为奇数吋,处于中间位置的变最值即为中位数:当N 为偶数时,中位数则为处于中间位置的两个数的平均数.   输入 输入数据第一行 ...

  3. javaweb 中的过滤器 包装器

    过滤器要做的事情: 请求过滤器:完毕安全检查,又一次格式化请求首部或体.建立请求审计或日志 响应过滤器:     压缩响应流,追加或改动响应流创建一个全然不同的响应. 过滤器和servlet三个相似地 ...

  4. 消息列队 分布式事务解办法 celery flower使用总结

    前言 项目中有场景 需要用到 分布式事务业务,经过查下资料把学习相关笔记做记录方便他人或者自己后面查看. 场景 在网站A业务中有个操作 是 要在网站B中新建一台服务器跑业务.A中执行B中的接口创建服务 ...

  5. POJ训练计划1035_Spell checker(串处理/暴力)

    Spell checker Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 18418   Accepted: 6759 De ...

  6. 通达OA 一些工作流调整后带来的后果及应对措施

    近期单位有个工作流须要改动,原因是最早设计时控件的字段设计不规范,控件直接使用了人员的名字来命名了.这不使用手机訪问时就出问题了,名字会直接显示出来,如今就须要进行调整. 调整初步有两个方案: 一是全 ...

  7. viewcontroller生命周期知识要点

    一 viewcontroller执行方法的主要顺序为: init—>loadView—>viewDidLoad—>viewWillApper—>viewDidApper—> ...

  8. Cocoa root class

    问题来源: 常见面试问题之: NSObject和NSObject protocol有什么区别,为什么要有NSObject protocol, 有没有不继承自NSObject的类? 虽然在iOS开发过程 ...

  9. SIFT算法中DoG特征点的修正

    SIFT算法中,在DoG空间找到极值点后,需要对极值点进行修正,本文主要详细的讲解一下为什么需要修正,以及如何对极值点进行修正. 下图演示了二维函数离散空间得到的极值点与连续空间的极值点之间的差别 利 ...

  10. Js两种post方式(转)

    第一种提交post的方式是传统方式,判断浏览器进行post请求. <SCRIPT stype=text/javascript> var xmlobj; //定义XMLHttpRequest ...