文章目录

  • 1 数据查询
  • 2 数据删除
  • 3 数据插入/更新


1 数据查询

数据查询共有三种函数:

  • all():无筛选条件查询并获取全部数据,类似于SELECT * FROM TABLE。返回值为queryset对象,仅可以通过for循环遍历访问或切片后遍历。
  • filter():查询并获取部分符合条件的数据,类似于SELECT * FROM TABLE WHERE <筛选条件>。返回值为queryset对象,仅可以通过for循环遍历访问或切片后遍历。
  • get():查询符合条件的一条数据,返回值为数据对象,可以直接访问。
  1. all()查询获取所有数据
from django.http import HttpResponse
from django.shortcuts import render
from apps.message_form.models import Message


def message_form(request):
    all_messages = Message.objects.all()
    first_messages = Message.objects.all()[:1]  # 切片
    # 返回的是queryset对象,因此必须for遍历
    for message in all_messages:
        print(message.name)
    print(first_message.name)    
    return render(request, "message_form.html")
  1. 查看执行的sql语句
def message_form(request):
    first_messages = Message.objects.all()[:1]
    print(first_message.query)  # 输出sql语句
    return render(request, "message_form.html")
  1. filter()条件查询查询操作
all_messages = Message.objects.filter(name="chaoql")
# 返回的是queryset对象,因此必须for遍历
    for message in all_messages:
        print(message.email)
  1. get()获取一个数据对象
def message_form(request):
    # get()查询不到数据或查询到多条数据,则抛出异常
    try:
        message = Message.objects.get(name="chaoql1")
        print(message.address)
    except Message.DoesNotExist as e:
        pass
    except Message.MultipleObjectsReturned as e:
        pass
    return render(request, "message_form.html")

2 数据删除

  1. 删除get()到的数据对象
def message_form(request):
    try:
        message = Message.objects.get(name="chaoql1")
        print(message.address)
        message.delete()
    except Message.DoesNotExist as e:
        pass
    except Message.MultipleObjectsReturned as e:
        pass

    return render(request, "message_form.html")
  1. 删除all()和filter()到的queryset数据

要么for循环遍历后逐个删除,要么一次性全部删除。

def message_form(request):
    all_messages = Message.objects.all()
    for message in all_messages:
        print(message.email)
        message.delete()  # 逐个数据对象删除
    all_messages.delete()  # 删除查询到的全部数据
    return render(request, "message_form.html")

3 数据插入/更新

save():若数据存在则更新数据;若数据不存在则插入。(存在与否根据主键判别)

def message_form(request):
    # 初始化数据对象并提交
    message = Message()
    message.name = "chaoql"
    message.email = "1415331985@email.com"
    message.address = "西安"
    message.message = "无"
    # 数据提交
    message.save()
    return render(request, "message_form.html")