创建模型步骤
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 1对1 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) -------------------》 构成1对1关系
class Meta:
db_table = 'userinfo'
2.查询
正向查询
user -----》 userinfo
首先由user对象,user.userinfo 这就是详情表的对象
对象属性的获取
user.userinfo.realname
反向查询
userinfo —》 user
userinfo.user
3.删除
根据user删除userinfo