一、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. BubbleGum96 开箱杂谈与软件资源

    前言 原创文章,转载引用务必注明链接. 拿到有一段时间了,一直在想写哪些内容.96boards发布以来,吸引了很多眼球.这里我就慢慢随便聊聊,希望能让大家对96boards有更多了解. 开箱 [开箱图 ...

  2. Elasticsearch 学习笔记 Elasticsearch及Elasticsearch head安装配置

    一.安装与配置 1.到官网下载Elasticsearch,https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6. ...

  3. day 18 面向对象的 继承

    一.概念性知识 面向对象的三大特征:     继承,多态,封装 继承是创建新类的一种方法,在python中,新建的类可以继承一个或多个父类,父类称作基类或超类,新建的类又称作派生类或子类. 继承的好处 ...

  4. Struts2的配置文件——web.xml

    任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件中Servlet才会被应用加载. 通常,所有的MVC框架都需要Web应用加载一个核心控制器,对于S ...

  5. 小程序 单页应用的 tab切换 实现

    小程序 单页应用的  tab切换 实现

  6. Hibernate commit() 和flush() 的区别

    <<精通Hibernate java对象持久化技术详解>> ,flush()方法进行清理缓存的操作,执行一系列的SQL语句,但不会提交事务;commit()方法会先调用flus ...

  7. 通俗易懂EJB

    摘自:http://blog.csdn.net/jojo52013145/article/details/5783677 1. 我们不禁要问,什么是"服务集群"?什么是" ...

  8. 在线安装Ganglia3.6.0,nginx+php搭建gweb,绝对通过

    环境:CentOS6.5 minimal 目标:安装Ganglia核心组件(gmond, gmetad, gmetric, gstat, libganglia).Ganglia web 准备 yum增 ...

  9. 20170223-问题001,增强中的E消息 显示为 S模式消息,

     MM01 的屏幕增强,里面写的      MESSAGE e056(z1) WITH '供应链计划(SCP) 储备物料与当期物料不能同时选择.'.可是现实出来是S 消息模式,这是为什么?系统转换了吗 ...

  10. gravity layout_gravity

    gravity:控制当前视图的内容/子view layout_gravity:控制视图本身