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)