1.常用查询方法及条件
def select_user(request):
#查询所有的数据
# result = User.objects.get(name='boshan')
# result = User.objects.filter(age__gt=18)
# print(result)
#查询第一条数据
# result = User.objects.first()
# print(result)
#查询最后一条数据
# result = User.objects.last()
# print(result)
#filter 根据参数提供的条件获取过滤后的记录
#注意:filter(**kwargs)方法,根据参数提供的提取条件,获取一个过滤后的QuerySet
# result = User.objects.filter(name='boshan')
# print(result)
#排除name='boshan'的记录
# result = User.objects.exclude(name='boshan')
# print(result)
#获取一个记录对象
#注意get返回的对象具有唯一性质,如果符合条件的对象有多个,获取一个过滤后的QuerySet,会报错!!
# result = User.objects.get(name='boshan')
# print(result)
#对结果排序order_by:
# result = User.objects.order_by('age')
# print(result)
#多项排序
# result = User.objects.order_by('age','id')
# print(result)
#逆向排序,就是在条件的前面加个负号
# result = User.objects.order_by('-age')
# print(result)
#将返回来的QuerySet中的Model转换成字典
# result = User.objects.all().values()
# print(result)
#获取当前查询到的数据的总数
#result = User.objects.count()
#print(result)
return HttpResponse('查询成功!!')
#exact 相当于等于号
# result = User.objects.filter(name__exact='zhangsan')
# print(result)
#iexact:跟exact类似,唯一不同的是忽略大小写
#contains 包含
# result = User.objects.filter(name__contains='bo')
# print(result)
#icontains跟contains类似,唯一不同的是忽略大小写
#startswith 以什么开始
# result = User.objects.filter(name__startswith='bo')
# print(result)
#istartswith同startswith,忽略大小写
#endswith 以什么结尾
# result = User.objects.filter(name__endswith='n')
# print(result)
#iendswith同endswith,忽略大小写
#in 成员所属
# result = User.objects.filter(age__in=(18,28))
# print(result)
#gt 大于
# result = User.objects.filter(age__gt=18)
# print(result)
#gte 大于等于
#lt 小于
#lte 小于等于
#range 区间
#判断是否为空
查找对象的条件的意思是传给以上方法的一些参数。相当于是SQL语句中where语句后面的条件,语法为字段名_规则。
2.常用的字段类型映射关系
int------->IntegerField
varchar-------->CharField
longtext-------->TextField
date--------->DateField
datetime------->DateTimeField
primary_key:指定是否为主键
unique:指定是否唯一
null:指定是否为空,默认为False
blank:等于True时form表单验证时可以为空,默认为False
default:设置默认值
DateField.auto_now:每次修改都会将当前时间更新进去,只有调用,QuerySet.update方法将不会调。这个参数只是Date和DateTime以及TimeModel.save()方法才会调用e类才有的。
DateFiled.auto_now_add:第一次添加进去,都会将当前时间设置进去。以后修改,不会修改这个值。
3.表关系
一对多
#学院表
class Department(models.Model):
d_id = models.AutoField(primary_key=True)
d_name = models.CharField(max_length=30,default='python')
#学生表
class Student(models.Model):
s_id = models.AutoField(primary_key=True)
s_name = models.CharField(max_length=30,default='zhangsan')
department = models.ForeignKey('Department',on_delete=models.CASCADE )
#课程表
class Course(models.Model):
c_id = models.AutoField(primary_key=True)
c_name = models.CharField(max_length=20)
student = models.ManyToManyField('Student')
一对一
多对多