• Django中Model操作(数据库表名修改/列名修改/数据筛选过滤)


    一、数据库表名修改与数据表中列名修改

    from django.db import models
    
    class Person(models.Model):
        # 定义用户名是唯一的
        p_name = models.CharField(max_length=20,unique=True,db_column='name')
        # 更改数据库中的列名为age
        p_age = models.IntegerField(default=18,db_column='age')
        p_sex = models.BooleanField(default=True,db_column='sex')
    
        # 更改数据库表名称
        class Meta:
            db_table = 'person'
        
        

    二、数据筛选过滤,filter与exclude

    1、filter

      表示查询符合设定条件的集合

      =  直接筛选符合条件的

      __gt  大于(为双下划线)

      __gte  大于等于

      __lt  小于

      __lte  小于等于

      __contains  包含(加 i 忽略大小写)

       __startswith  开头是

      __endswith  结尾是

      __in  其中之一

      __range  范围

    2、exclude

      表示查询出不符合条件设定的集合

      筛选方式与filter一致

    3、代码实例

    from django.shortcuts import render
    from App_four.models import Person
    import random
    from django.http import HttpResponse
    
    # 给数据库批量添加数据
    def person(request):
        word_list = ['a','b','c','d','t','j','k','l','n','s','e','f','o','p','y','z','w']
        for i in range(20,60):
            person = Person()
            # 在列表中随机选取4个字母组合成一个名字
            words = random.sample(word_list,4)
            name = ''
            for word in words:
                name +=word 
                person.p_name = name
            person.p_age = i
            person.p_sex = random.choice([0,1])
            person.save()
        return HttpResponse('批量添加成功!')
    # 筛选过滤数据
    def get_person(request):
        persons = Person.objects.all()
        # 获取20岁的person
        person20 = persons.filter(p_age=20)
        # 获取40岁以上的person
        person40 = persons.filter(p_age__gt=40)
        # 获取40-50之间的人
        person50 = persons.exclude(p_age__lt=40).filter(p_age__lt=50)
        # 获取年龄在30-40岁之间的人并且性别为男的人
        person30 = persons.exclude(p_age__lt=30).filter(p_age__lt=40).filter(p_sex=1)
        content = {
            'persons1':person20,
            'persons2':person40,
            'persons3':person50,
            'persons4':person30,
    
        }
        return render(request, 'person.html', context=content)
        
  • 相关阅读:
    【BZOJ-4289】Tax 最短路 + 技巧建图
    【BZOJ-3895】取石子 记忆化搜索 + 博弈
    【BZOJ-4569】萌萌哒 ST表 + 并查集
    【BZOJ-3832】Rally 拓扑序 + 线段树 (神思路题!)
    【BZOJ-4213】贪吃蛇 有上下界的费用流
    【BZOJ-3122】随机数生成器 BSGS
    【BZOJ-2299】向量 裴蜀定理 + 最大公约数
    【BZOJ-1441】Min 裴蜀定理 + 最大公约数
    【BZOJ-2438】杀人游戏 Tarjan + 缩点 + 概率
    【BZOJ-4310】跳蚤 后缀数组 + ST表 + 二分
  • 原文地址:https://www.cnblogs.com/lxmtx/p/13370011.html
Copyright © 2020-2023  润新知