django 表的理解 好处:设计的好,会清晰,易于理解和维护,后期开发事半功倍,一目了然. 1. 一对一的表,两表的属性实际上完全可以合并成一个表,共用一个主键即可: 2. 一对多的表,可以设中间关联表,也可以将关联表并入“多”这头:若设独立关联表,则可引入“多”这头的主键作为其主键,也可另立主键并将“一”和“多”两表的主键作为关联表的外键: 3. 多对多的表,则必须设中间关联表,关联表设独立主键,并引入两个“多”头的表的主键作为关联表的外键. 4. 能用1对1的,就不用1对多:能用1对多的,…
django的models表查询 一.单表查询 (1) all(): 查询所有结果 # 返回的QuerySet类型 (2) filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 #返回的QuerySet类型 (3) get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个, #返回的models对象 如果符合筛选条件的对象超过一个或者没有都会抛出错误. (4) exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 #返回的Query…
目录 表单 Django中的表单 用表单验证数据 自定义验证 表单 HTML中的表单是用来提交数据给服务器的,不管后台服务器用的是 Django  还是 PHP还是JSP还是其他语言.只要把 input  标签放在 form  标签中,然后再添加一个提交按钮,那么以后点击提交按钮,就可以将 input  标签中对应的值提交给服务器了. html中的表单提交  <form action="1.php" method="POST"> 用户名:<inpu…
一.创建表 创建四个表:书籍,出版社,作者,作者详细信息 四个表之间关系:书籍和作者多对多,作者和作者详细信息一对一,出版社和书籍一对多 创建一对一的关系:OneToOne("要绑定关系的表名") 创建一对多的关系:ForeignKey("要绑定关系的表名") 创建多对多的关系:ManyToMany("要绑定关系的表名")  会自动创建第三张表 创建表 class Book(models.Model): nid = models.AutoFiel…
表关系的实现   预备知识 ORM的正向操作和反向操作: 1.正向操作:一个模型中定义了一个外键,通过该模型对该外键操作的操作叫做正向操作. 2.反向操作:被外键所关联的模型,通过该模型对外键所在模型的操作叫做反向操作.   表关系的操作 我们通过下面的案例,来了解表关系的操作 首先我们需要几张表:学生表,学生信息表,班级表,报名表,课程表 他们的关系是:学生表和学生信息表  一对一 班级表和学生表         一对多 学生表和课程表         多对多 下面是Django 模型代码:…
Django作为重量级的Python web框架,在做项目时肯定少不了与数据库打交道,编程人员对数据库的语法简单的还行,但过多的数据库语句不是编程人员的重点对象.因此用ORM来操作数据库相当快捷.今天来介绍一下用ORM操作数据库. 创建Django项目可以使用pycharme专业版直接快速创建.如果不是专业版也可以使用命令进行创建.下面列出命令行创建方式:django-admin startproject orm_test这时会在当前目录创建文件夹名为orm_test,接下来进入orm_test…
一.使用数据库需要设置settings.py文件. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'NAME': '', # Or path to database file if using sqlite3. 'USER': '', # Not used with sqlite3. 'PASSWORD…
问题 在django的models.py 中,我们定义了一些choices的元组,类似一些字典值,一般都是下拉框或者单多选框,例如 0对应男 1对应女等等 看下例子: class Area(models.Model): Area_Level = ( (0, u'全国'), (1, u'省.直辖市'), (2, u'市.直辖市区'), (3, u'区.县等'), ) areaname = models.CharField(max_length=30,unique=True, verbose_nam…
一,关于表单: 表单在百度百科的解释:   表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域:包含了文本框.密码框.隐藏域.多行文本框.复选框.单选框.下拉选择框和文件上传框等. 表单按钮:包括提交按钮.复位按钮和一般按钮:用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作. 讲的相当详细:http://baike.baidu.com/vi…
需求: 1.有一张文章表和一张评论表 2.两张表的关系是一对多 3.规则:若是有新评论,则将对应的文章置顶,若是有新文章则将新文章置顶. 思路: 在文章表中增加一个最后评论时间的字段.然后采用分组排序,即可解决 预留: Django中除了有外键对应关系表外,如何将多张表联合查询?…
在meta 类中指定表名,在字段中通过db_column指定列名如下所示 class Record(models.Model): content=models.CharField(max_length=32,db_column='record_content') class Meta: db_table="Record"…
本文参考自:django官方文档models/field 在model中添加字段的格式一般为:  field_name = field_type(**field_options) 一  field options(所有字段共用) 1  null   默认为False,True则表示可以为null.(空字符串在数据库中可能被存储为'') 2  blank  默认为False,True表示可以为空. 3  choice  可选的,限制了该选项的字段值必须是所指定的choice中的一个. class…
首先选择选用的数据库,(本人选用django(1.11.8版本)) 在主项目settings中操作如下: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'fruitday', 'USER': 'root', ', 'HOST': 'localhost', ' } } 然后在主项目的初始化文件(__init__.py)中写入如下代码: import pymysql pymysql.install_a…
增加一个知识点,当表中有多对多关联时,在前端展示的时候是一个列表,所以在展示的时候需要这样做: 表结构: class ProjectEnv(models.Model): project = models.ForeignKey(verbose_name='项目', to='Project') env_choices = ( (1, '测试'), (2, '正式') ) env = models.IntegerField(verbose_name='环境', choices=env_choices)…
例: 文章点赞 class ArticleUpDown(models.Model): """ 点赞表 """ nid = models.AutoField(primary_key=True) user = models.ForeignKey(to="UserInfo", null=True, on_delete=models.CASCADE) article = models.ForeignKey(to="Artic…
ModelForm 和 普通的Form 都可以做表单验证 对于ModelForm如果只是想验证其中一部分model中的field,可以指定:内部类Meta的fields元素: fields = ('xx','yy') 注意fields一定是要是元组 这样验证的时候就只会验证指定的部分   用is_valid()就可以验证   两者都可以在实例化的时候初始化数据,比如: class MyForm(Form): some_field = forms.CharField() my_form = MyF…
很多时候需要在多张表之间进行跨表查询,这其中外键是必须存在的,而通过外键所处的表的对象进行跨表查询, 称为正向查询.反之,则是反向查询. 正向查询很简单,这里不谈. 主要谈下反向查询. class Userinfo(models.Model): name = models.CharField(max_length=32) password = models.CharField(max_length=64) gender = models.CharField(max_length=32) clas…
一.字段联合使用的限制设置: 有这么个需求,现有两个字段,A字段是选择用户是不是vip, B字段是统计用户的vip等级; 要求: 用户不是vip时,A选择false,B字段为空; 是vip时,A字段选择true,B字段就必须填用户的vip等级! 即B字段可为空,A字段须是true时,B字段就必须有值,否则后续查询就必然出错,所以单单使用 字段属相能否为空无法限制.解决:利用对象的save()方法,我们可自定义save,然后再调用父类该 方法之前做个判断,不满足要求就抛出异常,代码如下:(在表类中…
def form_process_view(request): if request.method == 'POST': # 请求为 POST,利用用户提交的数据构造一个绑定了数据的表单 form = Form(request.POST) if form.is_valid(): # 表单数据合法 # 进行其它处理... # 跳转 return redirect('/') else: # 请求不是 POST,构造一个空表单 form = Form() # 渲染模板 # 如果不是 POST 请求,则…
直接写代码吧 CHECKBOX_CHOICES = ( ('Value1','Value1'), ('Value2','Value2'), ) class EditProfileForm(ModelForm): interest = forms.MultipleChoiceField(required=False, widget=CheckboxSelectMultiple(), choices=CHECKBOX_CHOICES,) def save(self, *args, **kwargs)…
__gt     大于__gte   大于等于 __lt      小于 __lte    小于等于 __in     存在于一个list范围内 __startswith    以...开头 __istartswith   以...开头忽略大小写 __endswith     以...结尾 __iendswith    以...结尾,忽略大小写 __range   在...范围内 __year      日期字段的年份 __month   日期字段的月份 __day        日期字段的日…
多对一: 为了方便理解,两个表之间使用ForeignKey连接时,使用ForeignKey的字段所在的表为从表,被ForeignKey连接的表为主表. 使用场景:书和出版社之间的关系,一本书只能由一个出版社出版,一个出版社却可以出版很多书 实现方式:一对多或者说多对一,在Django中是使用ForeignKey实现的,下面是例子: class Publisher(models.Model): """出版社模型""" id = models.Aut…
回忆一下Form表单验证的逻辑: 前端有若干个input输入框,将用户输入内容,以字典传递给后端. 后端预先存在一个Form表单验证的基类,封装了一个检测用户输入是否全部通过的方法.该方法会先定义好错误信息的字典,并会遍历类的所有属性(对应前端待验证的输入域),调用各自的验证方法,将错误信息(两类,必要与否以及格式正确与否)存入字典,并得出最终的验证结果.在使用时,需要定义继承自Form基类不同的Form类,以对应有着不同输入域的Form表单.在拿到前端给的字典前,要先初始化自定义From类,直…
Django 11 form表单(状态保持session.form表单及注册实现) 一.状态保持 session 状态保持 #1.http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态 #2.客户端与服务器端的一次通信,就是一次会话实现状态保持的方式:在客户端或服务器端储存与会话有关的数据 #3.储存方式包括cookie.session,会话一般指session #4.使用cookie,所有数据存储在客户端,注意不要存储敏感数据 #5.是由session方式,所有数据存储在服务…
Django中创建表. 用的django项目自带的sqlite数据库,创建完毕后将表注冊到jdango.admin,就能够在浏览器在管理了. 在django项目的models.py文件里: from django.db import models # Create your models here. class Author(models.Model): ) ) class Article(models.Model): )     content = models.TextField()    …
django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm. 关于django中的表单系统有两种: 基于django.forms.Form 基于django.forms.ModelForm 表单API form.is_bound() 表单有两种状态:绑定和未绑定,使用form.is_bound()来判断. form.is_valid() 验证表单数据是否合法,返回True或者False form.errors 表单的错误字典 Form.has_…
一.问题背景 在Django中一个表可能是多个表共同合成的对象,比如商品表,用户表,用户购买商品的表,就是这种情况,在这中情况下面我们要添加一条记录到用户购买的商品表中我们该如何才做,此时我们需要获取对象,获取商品对象和用户对象,再将用户对象和商品对象添加到用户商品购买表中. 二.模型 三.使用 由于信息借阅表是由已存在的书籍信息表和借阅者信息表构成,在添加记录的时候就需要前面的两个表的对象,此时这张表具有的表的特性如下 1.借阅信息表里面包含书籍id和name 2.借阅信息表里面包含借阅者id…
作者的管理 1.设计表结构 出版社 书籍 作者 一个出版社出版多个书籍  1对多 书籍和作者的关系:一个作者写多本书,一本书可以是多个作者写.多对多 1)创建一张表,表中多对多的数据关系.使用 多对多字段的方法 2)创建的这个类,会创建两个表,app_加类名(开头变小写),app_这个类名_另一张表类名 3)这个类创建的表中没有多对多的字段,多对多的关系是以这张表表名加_id和另一张表表名加_id两个字段合成的新的表,id主键自动生成 4)一般多对多字段关联的是有外键的那张表.   2.展示含有…
自己创建第三张表建立多对多关系 表的创建 # 老师表和学生表可以是一个多对多的关系,建表时可以手动建立第三张表建立关联 class Student(models.Model): name = models.CharField(max_length=32, null=True) age = models.CharField(max_length=32, null=True) class Teacher(models.Model): name = models.CharField(max_lengt…
第三百零八节,Django框架,models.py模块,数据库操作——链表结构,一对多.一对一.多对多 链表操作 链表,就是一张表的外键字段,连接另外一张表的主键字段 一对多 models.ForeignKey()外键字段一对多,值是要外键的表类 from __future__ import unicode_literals from django.db import models #导入models对象 class yong_hu_shen_fen(models.Model): #创建用户是否…