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、代码实例

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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)
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值