首页
学习
活动
专区
圈层
工具
发布

django 模型关系

模型关系 关系数据库的威力体现在表之间的相互关联,Django提供了三种最常见的数据库关系:多对一 (many-to-one),多对多(many-to-many),一对一(one-to-one)...多对一关系 多对多关系 一对一关系 多对一 django是使用django.db.models.ForeignKey 定义多对一关系 ForeignKey需要一个位置参数来指定本Model关联的Model...,ForeignKey关联的Model 是"一", ForeignKey所在的Model是"多" 比如汽车和制造商的例子,一辆汽车只能属于一个制造商,但是一个制造商有多辆汽车,这个关系,用Django...多对一查询 正向查询( ForeignKey 所在的模型查询关联的模型) car = Car.objects.get(pk=2) car.manufacturer #返回一条Manufacturer 对象 反向查询...如果不仅仅需要知道两个Model之间是多对多的关系,还需要知道这个关系的更多信息,比如Person和Group是多对多的关系,每个person可以在多个group里,那么group里可以有多个person

2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django之URL反向解析

    1、反向解析的概述和来由 2、反向解析的示例 3、url分组的反向解析 1、反向解析的概述和来由 在Django中提供了关于URL的映射的解决方案,可以做两个方向的使用 1.普通解析过程:由客户端的浏览器发起一个...2、反向解析的示例 示例:登录成功跳转到index.html页面 在urls.py中 from django.conf.urls import url from django.contrib import...import render from django.shortcuts import reverse # 用于反向解析 from django.shortcuts import redirect #...# 后端views.py反向解析的使用 from django.shortcuts import render,HttpResponse,redirect,reverse url = reverse...的反向解析,例如 from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns

    2.3K20

    Django之QuerySet详解

    多个参数之间是和AND的关系。 2. exclude() exclude(**kwargs)返回一个新的QuerySet,它包含不满足给定的查找参数的对象。...这会生成一个复杂的查询并引起性能的损耗,但是在以后使用外键关系时将不需要再次数据库查询。 下面的例子解释了普通查询和select_related()查询的区别。...最后建议只在Django视图的POST请求中使用get_or_create(),因为这是一个具有修改性质的动作,不应该使用在GET请求中,那样不安全。...可以通过ManyToManyField属性和反向关联使用get_or_create()。在这种情况下,应该限制查询在关联的上下文内部。 否则,可能导致完整性问题。...和get_or_create()一样,这个方法也容易导致竞态条件,如果数据库层级没有前置唯一性会让多行同时插入。 在Django1.11在defaults中增加了对可调用值的支持。

    3.6K20

    Django学习笔记之Django的url反向解析

    0x00 URL反向解析和三种不同的反向解析方式 Django中提供了关于URL的映射的解决方案,可以做两个方向的使用: 1.普通解析过程:由客户端的浏览器发起一个url请求,Django根据URL解析...2.反向解析:通过一个视图的名字,再加上一些参数和值,逆向获取相应的URL。...Django提供了三种不同反向解析处理方式: 1.在模板templates中,使用url标记,如:{% url %} 2.在view中,使用django.core.urlresolvers.reverse...url(r'^articles/(\d{4})/$', 'news.views.year_archive'), #... ) 0x01 模板中的反向解析 <a href="{% url 'news.views.year_archive...import reverse from django.http import HttpResponseRedirect def redirect_to_year(request): # ...

    1.2K10

    django之路由分组,反向解析,有名

    ),   url(r'test',views.test),   url(r'testadd',views.testadd), ] 路由一旦匹配就不再走下面的路由匹配关系了 路由增加首页的方式 url...相对于前面的绑定关系,只要通过name的值就能找到前面的路径 from django.shortcuts import reverse res = reverse('add') print(res) ?...edit/{{user_obj.pk}}/ edit/{{user_obj.pk}}/ edit/{{user_obj.pk}}/ 路由分发(include): 总路由不再直接做路由与视图函数的对应关系...,而是将获取的路由分发给下面的app去处理对应关系 每一个app下都可以新建自己的urls.py static文件夹 templates文件夹 项目总路由: url(r'^app01/',include...的区别(了解) 1.0里面的url对应django2.0里面re_path django2.0里面的path第一个是精准匹配(你怎么写的,我就怎么匹配) django1.0版本中匹配到的参数都是字符串类型

    2K10

    Django中的关系映射

    什么是关系映射? 在关系型数据库中,通常不会把所有数据都放在同一张表中,不易于扩展。...常见的关系映射 一对一映射:例如一个身份证对应一个人 一对多映射:例如一个班级可以有多个学生 一对多映射:例如一个学生可以报考多个课程,一个课程可由多个学生学习....一对一映射(创建) 一对一是表示现实事物间存在的一对一的对应关系。...没有外键属性的一方,可以调用反向属性查询到关联的另一方 反向关联的属性为实例对象.引用类名(小写) 当反向引用不存在的时候,则会触发异常 当UserId类中定义了外键约束,则UserMit...,如:每个人都有不同的学校,每个学校都有不同的学生 MySQL中创建多对多需要以来第三张表来完成 Django中无需手动创建,Django自动完成 语法:在关联的两个类中的任意一个类中models.ManyToManyField

    2.6K20

    Django url 反向解析 和 命令空间

    Django 如何处理一个请求¶ 当用户请求Django 站点上的某个页面时,django系统用一个算法来决定执行哪段Python代码: 首先,Django会使用路由解析根模块(root URLconf...嵌套的参数¶ 正则表达式允许嵌套参数,Django 将解析它们并传递给视图。当反查时,Django 将尝试填满所有外围捕获的参数,并忽略嵌套捕获的参数。...URL 的反向解析¶ 在创建Django 项目时,一个常见的需求是如何获得URL的最终形式以嵌入到所生成的Content中(即嵌入到视图中、或URL资源中,或者显示给用户的URL等)或者用于处理服务器端的导航流...第二种方式叫做反向解析URL、反向URL匹配、反向URL查询或者简单的URL反查。...在某些场景中,一个视图是通用的,所以在URL 和视图之间存在多对一的关系。对于这些情况,当反查URL 时,只有视图的名字还不够。请阅读下一节来了解Django 为这个问题提供的解决办法。

    3.2K30

    Django ORM 知识概要

    models.FilePathField() models.URLField() models.UUIDField() IP地址,可以是IPV4,也可以是IPV6 models.GenericIPAddressField() 关系型字段...auto_now=True 更新时间 auto_now_add=True 新增时间 浮点型 Decimal max_digits=4 表示一共有多少位数 decimal_places=2 表示小数有多少位 关系型字段的参数...related_name='name' 反向查询时候可能会用到 on_delete=value value的值 CASCADE:删除引用的对象时,也删除引用它的对象 PROTECT:禁止删除引用的对象...反向查询 annotate() 使用聚合计数,求和,平均数,raw() 执行原生SQL annotate()对分组后的结果进行统计 Model.objects.get().子表的表名 _set.all...() 不返回QuerySet 的 API 获取对象 get(),get_or_create(),first(),last(),latest(),earliest(),in_bulk() 创建对象 create

    2.4K20

    Django基础篇-模型表关系

    一对多表关系 在 Mysql 中一对多是通过外键实现的,在 django 模型中通过 ForeignKeyField 类型实现。...框架篇-Django博客应用-更新首页 一对一表关系 在 Mysql 中一对一是通过外键加唯一键实现的,在 django 模型中通过 OneToOneField 类型实现。...多对多表关系 在 Mysql 中多对多是通过中间表外键加联合唯一键实现的,在 django 模型中通过 ManyToManyField 类型实现。中间表模型会自动创建。...例子: 学院---学生---课程---学生成绩 学院与学生一对一关系,学生与课程多对多关系 课程 学生成绩 关系表中数据的操作 : 同级目录下的 views.py from django.http import...rs.department) # 多对多的正向查询 print(rs.course.all()) cs = Course.objects.first() # 多对多的反向查询

    1.1K30

    python-Django-Django 模型层的关联关系(一)

    Django是一个流行的Python Web框架,其模型层允许开发人员定义数据库模型以及它们之间的关系。...这些关系被称为模型关联关系,允许开发人员在不同的模型之间建立复杂的关联关系,从而实现更高级别的数据结构。一对一关系一对一关系是指两个模型之间存在唯一的对应关系。...在Django中,可以使用OneToOneField字段来定义一对一关系。...一对多关系一对多关系是指一个模型可以对应多个另一个模型的实例。在Django中,可以使用ForeignKey字段来定义一对多关系。...多对多关系多对多关系是指两个模型之间存在多个对应关系。在Django中,可以使用ManyToManyField字段来定义多对多关系。

    1.2K10
    领券