增加数据

初始化模型对象,然后调用 save() 将其存入数据库。

Django 在你显式调用 save() 才操作数据库,save() 方法没有返回值。

  1. author = Author(author_name='admin')
  2. author.save()

创建一个对象并直接存入数据库

  1. author = Author.objects.creaet(author_name='admin')

批量增加数据
https://docs.djangoproject.com/zh-hans/4.0/ref/models/querysets/#bulk-create

删除数据

  1. author = Author.objects.get(author_nane='admin')
  2. author.delete()

修改数据

  1. author = Author.objects.get(author_name='admin')
  2. author.address = 'beijing'
  3. author.save()

F对象,原始值对象,方便在原始数据的基础上进行数据更新。批量更新

  1. models.Aricle.objects.filter(title='TEST').update(view_count=F('view_count')+1)

查询数据

1.使用get方法,结果只能是一条,查询结果为空或者是多条数据会抛出异常。

  1. author = Author.objects.get(author_name='admin')

2.使用filter方法,结果可以是0条或多条,返回的是一个集合。

  1. author_group = Author.objects.filter(author_name='admin')

指定多个查询条件,使用filter方法

  1. author_group = Author.objects.filter(author_name='admin', address='beijing')
  1. author_group = Author.objects.filter(author_name='admin').filter(address='beijng')

模糊查询

  1. author_group = Author.objects.filter(author_name__contains='admin')

空值查询

  1. author_group = Author.objects.filter(author_name__isnull=True)

数值集合

  1. author_grup = Author.objects.filter(author_name__in=['admin','guest'])

关系查询,gt大于,gte大于等于,lt小于,lte小于等于,eq等于

  1. author_group = Author.objects.filter(age__gt=18)

日期查询,year限定年份,month,day,week_day,hour,minute

  1. author_group = Author.objects.filter(birthday__year=2021)

查询所有数据

  1. author_group = Author.objects.all()

查询不满足条件的记录合集,excluede方法

  1. author_group = Auhtor.objects.exclude(author_name='admin')

将查询的记录合集排序,order_by方法

  1. author_group = Author.objects.all().order_by('author_name')

将查询的记录合集返回JSON格式,values方法

  1. author_group = Author.objects.all().values()

查询满足条件的记录数量,count方法

  1. author_group_count = Author.objects.filter(author_name='admin').count()

提取满足条件的记录合集中的第一条,first方法

  1. author = Author.objects.filter(author_name='admin').first()

提取出满足条件的记录合集中最后一条,last方法

  1. author = Author.objects.filter(author_name='admin').last()

查看是否有满足条件的记录,exists方法,返回布尔值

  1. have_author = Author.objects.filter(author_name='admin').exists()

Q对象,条件对象

  1. from django.db.models import Q
  1. NOT操作,使用~表示

    1. author_group = Author.objects.filter(~Q(suthor_name='admin'))
  2. AND操作,使用and或者&表示

    1. author_group = Author.objects.filter(Q(suthor_name='admin') and Q(status='1'))
  3. OR操作,使用or或者|表示

    1. author_group = Author.objects.filter(Q(suthor_name='admin') or Q(author_name='guest'))

    自定义查询语句,raw方法

    1. Author.objects.raw('select * from author')

    自定义查询语句,拼接参数,如下写法可以防止SQL注入

    1. Author.objects.raw('select * from author where author_name = %s and password = %s', [username, password1])

    高级操作

get_or_create

https://blog.csdn.net/weixin_44649870/article/details/100566014

顾名思义,查询或者创建一条数据,首先是执行的时候首先会去查询有没有这个值,如果有就返回,没有就创建。
会返回一个tuple,第一个值是查到或者创建的数据,第二个值是一个布尔,表示是否执行了创建操作。

  1. user, created = User.objects.get_or_create(u_id=1, name="张三", defaults={'address':'上海'})

等价于

  1. users = User.objects.filter(u_id=1, name="张三").first()
  2. if user:
  3. print(user)
  4. else:
  5. user = User.objects.create(u_id=1, name="张三", address="上海")
  6. print(user)

参数
**kwargs,数据的查询条件。
defaults,如果没有查到数据,创建数据时提供的填充数据。