Django中models模块增删改查

发布时间 2023-04-10 14:28:57作者: 心默默言

1 django操作数据库

1.1创建表和字段

from django.db import models


class Blog_Model(models.Model):
    name = models.CharField(db_column='name', max_length=200, blank=True, verbose_name='name')
    num = models.IntegerField(db_column='num', blank=True, verbose_name='num')
class Meta: db_table = 'Blog' # db_table--重写数据表名称
  1. 注:在类里面不指定主键字段,django会帮您自动创建一个id主键!
  2. 默认情况下,Django 会根据模型类的名称和包含它的应用的名称自动指定数据库表名称。eg:blog_type(blog:APP名称,type:模型类名称)
  3. 使用 Meta类中的 db_table 参数来重写数据表的名称

 

1.2增

Blog_Model.objects.create(name='zz', num=4)
Blog_Model(name='aa', num=3).save()
blog, b = Blog_Model.objects.get_or_create(id=1, name='ww', num=1)
  • get_or_create顾名思义,查询或者创建一条数据,首先是执行的时候首先会去查询有没有这个值,如果有就返回,没有就创建。
  • get_or_create会返回一个tuple,第一个值是查到或者创建的数据,第二个值是一个布尔,表示是否执行了创建操作。
  • 在进行查询的时候和使用get查询类似,当查到超过一条数据的时候会触发MultipleObjectsReturned。
  • 创建的时候也和使用create创建类似。
  • 如果你正在使用MySQL,请确保使用READ COMMITTED 隔离级别而不是默认的REPEATABLE READ,否则你将会遇到get_or_create 引发IntegrityError 但对象在接下来的get() 调用中并不存在的情况。

1.3删

Blog_Model.objects.filter(id=2).delete()

1.4改

Blog_Model.objects.filter(id=4).update(name='jj')

 

1.5查