django05笔记

创建模型步骤

1.定义模型:

class User(models.Model):   ----》 必须继承 models.Model
    # 属性
    # id = models.AutoField()
    # id = models.IntegerField(primary_key=True)
    username = models.CharField(max_length=10)
    password = models.CharField(max_length=12)
    age = models.IntegerField()
    gender = models.BooleanField(default=False)
    phone = models.CharField(max_length=11)
    # join_date = models.DateTimeField(default=datetime.now)
    join_date = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'user'
	

字段类型:

	CharField   --------》max_length
	IntegerField
	SmallIntegerField
    BooleanField
    DateField
    DateTimeField

类型值:

	null  blank  默认都是Flase
   choices = ((1,值),(2,值)) 枚举型
   primary_key  主键
   default     默认
   unique     不相等
   auto_now    当前时间

创建完User模型表:

执行动作:
	迁移:python manage.py makemigrations
	同步:python manage.py migrate
	创建的表的表明为:app_小写的模型
更改表明
	在User表最后写
	class Meta:
		db_table = 'user'  # 这个名字就是更改后的名字

查询数据库:

模型名.object.filter(字段名1 =)   返回一个结果集
模型名.object.filter(字段名1 =).exists()   验证数据库存不存在这个字段
模型名.object.filter(字段名1 =).delete()   删除对象
模型名.object.all()   返回一个结果集
模型名.object.get(id=id)  返回值是一个对象

复杂查询

CharField:
	users = User.object.filter(username__icontains = search)
	user = User.object.filter(username_startswith=search)
	user = User.object.filter(username__endswith=search)
IntegerField:
    users = User.objects.filter(age__lte=search)
    users = User.objects.filter(age__gte=search)
    users = User.objects.filter(age__in=search)  select * from user where age in (19,20,23)
    users = User.objects.filter(age__range=search)
DateTimeField:
    users = User.objects.filter(join_date__lt=search)
    users = User.objects.filter(join_date__month=search)
    users = User.objects.filter(join_date__year=search)

4.更新:

result = User.objects.filter(id=id).update(username=username, password=password, age=age, gender=gender,phone=phone,addr=addr)
    更新用户:
    user = User.objects.get(id=id)
    user.username = username
    user.password = password
    user.age = age
    user.gender = gender
    user.phone = phone
    user.addr = addr

    user.save()  # 保存更改

路径反向解析

{% url 'users:register' %}
		namespace:name ------->user/register

1对1:

user ----》  user的补充表
user 11 userinfo

通过:

class User(models.Model):
    username = models.CharField(max_length=12, unique=True)
    password = models.CharField(max_length=128)
    mobile = models.CharField(max_length=11, unique=True)
    email = models.CharField(max_length=30)
    join_dated = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'user'


class UserInfo(models.Model):
    realname = models.CharField(max_length=20)
    cardID = models.CharField(max_length=18)
    birthday = models.DateField()
    user = models.OneToOneField(User, on_delete=models.CASCADE)  -------------------》 构成11关系

    class Meta:
        db_table = 'userinfo'

2.查询
正向查询

user -----》 userinfo
首先由user对象,user.userinfo 这就是详情表的对象
对象属性的获取
user.userinfo.realname

反向查询

userinfo —》 user
userinfo.user

3.删除

根据user删除userinfo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值