(八)Django模型基础二(常用查询及表关系的实现)

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')

在这里插入图片描述

一对一
在这里插入图片描述

多对多
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44204361/article/details/103129177