博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django学习之----model(1)
阅读量:4300 次
发布时间:2019-05-27

本文共 1955 字,大约阅读时间需要 6 分钟。

学习和使用django已有半年,简单整理下一些model用法(一些基础用法和我工作中常用的较高级的用法)。一是为了分享下心得,二是为了巩固下model的用法。

安装和连接数据库这些就省略不说了。直接送创建model开始。

from django.db import modelsclass Person(models.Model):    first_name = models.CharField(max_length=30)    last_name = models.CharField(max_length=30)

class Book(models.Model):    artist = models.ForeignKey(Person)    name = models.CharField(max_length=100)    release_date = models.DateField()    num_stars = models.IntegerField()

每一个model对应数据库中的一张表,以上是最基本的形式(继承models.Model,你也可以继承其他models类,比如你可以继承TimeStampedModel,这样创建的表中会有created和modified字段,自动记录每条记录的创建时间和修改时间)。

运行python manage.py syncdb后会在你的数据库中创建两张表,person表中有两个字段(字符型,且最大长度为30)first_name和last_name。models的一些常用field:

ForeignKey:外键(一对多)

OneToOneField:一对一

IntegerField:数字

PositiveIntegerField:正整数

DateTimeField: 日期类型

BooleanField:  布尔

.....

创建好了数据库,我们就可以在view层进行增删改查了

  (1)person = Person.objects.all()    #查看person表中所有数据

    (2)  person = Person.objects.filter(first_name='guo')  #查看person表中first_name='guo'的数据

  (3)person = Person.objects.get(first_name='guo')   #只返回person表中first_name='guo'的一条数据,请慎用get(),因为如果返回的对象有多个,会报MultipleObjectsReturned错,如果为空,会报DoesNotExist错误。

  (4)person = Person.objects.all().order_by("-first_name")  #表示按first_name倒叙排列

  (5)person = Person.objects.all()[1]   #QuerySet可以像列表一样用索引取值,但不支持负数。

  (6)Person.objects.value_list('first_name', flat=True)   #只显示first_name, 扁平化输出

          结果:['guo', '', ....]

增:

有以下两种方式

(1)person = Person(first_name='guo', last_name="hua")

         person.save()    #此时才将数据保存到数据库中

(2)你也可以一步直接存在数据库

         person = Person.objects.create(first_name='guo', last_name="hua")

(1)person = Person.objects.filter(first_name='guo', last_name="hua")

         person.delete()

  (2)  person = Person.objects.filter(first_name='guo', last_name="hua").delete()

   #清空表中所有数据可以这样    Person.objects.all().delete()

 (1)person = Person.objects.filter(first_name='guo', last_name="hua")

          person.first_name = "wang"

          person.save()

   (2)  person = Person.objects.filter(first_name='guo', last_name="hua").update(first_name = "wang")

转载地址:http://oavws.baihongyu.com/

你可能感兴趣的文章
Docker(三) 构建镜像
查看>>
Spring 全家桶注解一览
查看>>
JDK1.8-Stream API使用
查看>>
cant connect to local MySQL server through socket /tmp/mysql.sock (2)
查看>>
vue中的状态管理 vuex store
查看>>
Maven之阿里云镜像仓库配置
查看>>
Maven:mirror和repository 区别
查看>>
微服务网关 Spring Cloud Gateway
查看>>
SpringCloud Feign的使用方式(一)
查看>>
SpringCloud Feign的使用方式(二)
查看>>
关于Vue-cli+ElementUI项目 打包时排除Vue和ElementUI
查看>>
Vue 路由懒加载根据根路由合并chunk块
查看>>
vue中 不更新视图 四种解决方法
查看>>
MySQL 查看执行计划
查看>>
OpenGL ES 3.0(四)图元、VBO、VAO
查看>>
OpenGL ES 3.0(五)纹理
查看>>
OpenGL ES 3.0(八)实现带水印的相机预览功能
查看>>
OpenGL ES 3.0(九)实现美颜相机功能
查看>>
FFmpeg 的介绍与使用
查看>>
Android 虚拟机简单介绍——ART、Dalvik、启动流程分析
查看>>