django框架中的模型

文章目录

    • 关联关系
      • Many-to-one relationships
      • Many-to-many relationships¶
    • django学习——model中的get和filter方法的区别

模型
模型是您的数据唯一而且准确的信息来源。它包含您正在储存的数据的重要字段和行为。一般来说,每一个模型都映射一个数据库表。

基础:

  • 每个模型都是一个 Python 的类,这些类继承 django.db.models.Model
  • 模型类的每个属性都相当于一个数据库的字段。
  • 综上诉说,Django 给你一个自动生成访问数据库的 API;请参阅 进行查询。

关联关系

Many-to-one relationships

定义一个多对一的关联关系,使用 django.db.models.ForeignKey 类。就和其他 Field 字段类型一样,只需要在你模型中添加一个值为该类的属性。

from django.db import models# Create your models here.
from django.db import models#多对一关系(如果一个 Car 模型 有一个制造者 Manufacturer --就是说一个 Manufacturer 制造许多辆车,但是每辆车都属于某个特定的制造者)
class Manufacturer(models.Model):pass#....
class Car(models.Model):manufacturer = models.ForeignKey(Manufacturer,on_delete=models.CASCADE)#...

Many-to-many relationships¶

定义一个多对多的关联关系,使用 django.db.models.ManyToManyField 类。就和其他 Field 字段类型一样,只需要在你模型中添加一个值为该类的属性。

如果你只是想要一个类似于记录披萨和配料之间混合和搭配的简单多对多关系,标准的 ManyToManyField 就足够你用了。然而,有的时候你可能会需要在两个模型的关系中记录更多的数据。

举例来讲,考虑一个需要跟踪音乐人属于哪个音乐组的应用程序。在人和他们所在的组之间有一个多对多关系,你可以使用 ManyToManyField 来代表这个关系。然而,你想要记录更多的信息在这样的所属关系当中,比如你想要记录某人是何时加入一个组的。

对于这些情况,Django允许你指定用于控制多对多关系的模型。你可以在中间模型当中添加而外的字段。在实例化 ManyToManyField 的时候使用 through 参数指定多对多关系使用哪个中间模型。对于我们举的音乐家的例子,代码如下:

from django.db import modelsclass Person(models.Model):name = models.CharField(max_length=128)def __str__(self):return self.nameclass Group(models.Model):name = models.CharField(max_length=128)members = models.ManyToManyField(Person, through='Membership')def __str__(self):return self.nameclass Membership(models.Model):person = models.ForeignKey(Person, on_delete=models.CASCADE)group = models.ForeignKey(Group, on_delete=models.CASCADE)date_joined = models.DateField()invite_reason = models.CharField(max_length=64)

具体的参考:
官方文档:(https://docs.djangoproject.com/zh-hans/2.1/topics/db/models/#automatic-primary-key-fields)

django学习——model中的get和filter方法的区别

django的get方法是从数据库的取得一个匹配的结果,返回一个对象,如果记录不存在的话,它会报错。

django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟主机TOMCAT配置

在tomcat中添加虚拟主机&#xff1a;   编辑"tomcat\conf\server.xml"&#xff0c;在"<Engine></Engine>"元素中新加子元素"<Host></Host>"&#xff0c;如下&#xff1a;  </Host>     <Host name&quo…

django框架中表单

参考官方文档,太详细了 (https://docs.djangoproject.com/zh-hans/2.1/topics/forms/)

鸟哥学习笔记六(基础篇第十一章)

type:查看指令是否是bash内建指令 变量的设定规则 1. 变量与变量内容以一个等号『』来连结&#xff0c;如下所示&#xff1a; 『mynameVBird』 2. 等号两边不能直接接空格符&#xff0c;如下所示为错误&#xff1a; 『myname VBird』或『mynameVBird Tsai』3. 变量名称只能…

django-models类索引外键时候的related_name属性作用

其实可以就理解为,一对多关系拿对象的解决 可以把引用理解为主从关系 主引用从,即一对多 , 注意外键字段是放在多的一端的,比如一个班级class 有很多同学 students,那么就在students类里面设置class字段值是外键类型 从students拿class数据很好拿, studet.class就拿到了 但是从…

查找算法分析

参考&#xff1a; https://www.cnblogs.com/maybe2030/p/4715035.html#_label0

PPT设计里的小技巧

首先想说的是PPT设计&#xff0c;现在还是有很多人只把PPT当成一个存放文字和图片的软件&#xff0c;说的更直接点就是当是一个可以全屏放映内容的软件。但是我想说的是PPT已经走向了设计类型的软件&#xff0c;当Microsoft office Powerpoint2010正式版出来的时候这种感觉更盛…

PDFlib免费下载地址及详细介绍手册

PDFlib是一个用于创建PDF文档的开发工具,也可直接在你的服务器端产生PDF输出, 可利用PDFLib提供的简单易用的API&#xff08;应用编程接口&#xff09;在服务器或客户端产生PDF文档, PDFlib在生成PDF文档时不需要第3方软件的支持,也不需要其它工具。此产品属于产品 PDFlibPDI 的…

Hbase时间同步

如果Hbase的时间没有同步&#xff0c;启动主节点会起来&#xff0c;子节点的regionServer就不会起来。 错误日志如下&#xff1a; aused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ClockOutOfSyncException): org.apache.hadoop.hba…

高德地图AmapSDKDemo运行

①file/new/other/androd Application Poject&#xff0c;选择SDKDemo&#xff0c;复制到workspace ②申请amap的key&#xff0c;名字在res/values/strings/的demo_title&#xff1a;为AMapsD Demo ③run-as可以在模拟器里也可以在手机上。 转载于:https://www.cnblogs.com/jzz…

GCD,大家都知道的回顾

GCD&#xff0c;自iOS4.0吧&#xff0c;比block还要早&#xff0c;他的用处主要是体现在线程方面&#xff0c;比如你有个比较麻烦的而且循环比较大的代码段什么&#xff0c;比如有个后台下载什么的&#xff0c;这都必须放在子线程里一个放在子线程里执行&#xff0c;为了不影响…

对逻辑数据库的操作

使用数据库语言时&#xff0c;一定要注意以分号结尾( ;)1、创建数据库CREATE DATABASE 数据库名&#xff1b; CREATE DATABASE Scores;//创建指定名称的数据库&#xff0c;字符集使用的是“安装数据库时的指定的字符集”&#xff1b;CREATE DATABASE 数据库名 CHARACTER SET 字…

数据库---表的操作

1、创建表格式 &#xff1a; create table 表名(字段名1 类型(长度) 约束&#xff0c;字段名2 类型(长度) 约束&#xff0c;... ); 示例&#xff1a; CREATE TABLE stu(id INT PRIMARY KEY , #primary key&#xff1a;设置为主键&#xff0c;被修饰为主键的数据&#xff0c;不能…

auto_ptr解析

转自 http://www.cppblog.com/SmartPtr/archive/2007/07/05/27549.htmlauto_ptr解析auto_ptr是当前C标准库中提供的一种智能指针&#xff0c;或许相对于boost库提供的一系列眼花缭乱的智能指针&#xff0c; 或许相对于Loki中那个无所不包的智能指针&#xff0c;这个不怎么智能…

Spring——自定义属性编辑器+Bean的生存范围+Bean的生命周期

一、自定义属性编辑器&#xff08;一个类&#xff09;&#xff1a; 步骤&#xff1a; 1.写一个类&#xff0c;这个类继承PropertyEditorSupport。 2.重写setAsText()方法。 3.在bean.xml文件中添加属性编辑器的bean。 例子&#xff1a;点击打开链接 二、Bean的生存范围&#xf…

数据库---增删改查

1、添加数据INSERT INTO 表名(字段名1,字段名2...) values(值1,值2...); INSERT INTO newstu(id,name)values(12,胡歌);INSERT INTO 表名 values(值1&#xff0c;值2); INSERT INTO newstu values(12,胡歌); 注意&#xff1a; 值与字段必须一一对应&#xff0c;且个数相同&…

数据库---查询(详细)

1、查询 SELECT * FROM 表名 WHERE 条件&#xff1b; (1)、SELECT * FROM 表名&#xff1b;#查询表内的所有数据 SELECT * FROM PRODUCT;(2)、SELECT 字段1&#xff0c;字段2... FROM 表名;#查询表内的指定字段的数据 SELECT PIN,PRICE FROM PRODUCT; (3)、SELECT * FRO…

微信公众平台开发接口PHP SDK完整版

官方提供的SDK只有一个文本消息功能&#xff0c;我们将所有消息的消息类型及事件响应都整理了进来&#xff0c;并且加入日志记录&#xff0c;代码如下&#xff1a; 更新日志&#xff1a; 2013-01-01 版本1.02014-03-15 增加图片、视频、语音的内容回复2014-04-09 增加菜单链接事…

BZOJ3570 : DZY Loves Physics I

考虑两个质量均为m&#xff0c;速度分别v1、v2的小球发生完全弹性碰撞的影响&#xff1a; 由动能守恒得&#xff1a; $\frac{1}{2}mv_1^2\frac{1}{2}mv_2^2\frac{1}{2}mv_1^2\frac{1}{2}mv_2^2$$v_1^2v_2^2v_1^2v_2^2$ 由动量守恒得&#xff1a; $mv_1mv_2mv_1mv_2$$v_1v_2v_1v…

数据库---主键约束

1、设置主键约束(1)、方式一&#xff1a;创建表时&#xff0c;在字段在描述处声明指定字段为主键&#xff1b; CREATE TABLE 表名(字段 类型(长度) PRIMARY KEY,字段 类型(长度) );CREATE TABLE STUDENT(STU_ID INT PAIMARY KEY,STU_NAME VARCHAR(255) );(2)、方式二&#xff1…

关于VS2010帮助文档的使用和VC6.0在Win7 64位下的使用

由于购置了新的电脑&#xff0c;安装的是Win7 64位的操作系统&#xff0c;这两天我在重新安装编程环境的时候遇到一些问题&#xff0c;现在都解决掉了&#xff0c;分享出来以供需要的人参考。 一、以前使用的是VS2008&#xff0c;从VC6到2008这么多年了一只使用的MSDN是带索引的…