Django ORM基本操作
一、数据库的创建及增删改查
1 使用类创建表
- 在models.py中
from django.db import models
- 继承models.Model
1 写类,对应表名
from django.db import models
class UserInfo(models.Model):继承models.Model
name = models.CharField(max_length=16)
age = models.IntegerField()
- 设置外键,两个表之间需要建立连接,可以设置外键
ut = models.ForeignKey('UserType') - 设置外键可以为空, null=True ut = models.ForeignKey('UserType',null=True)
- 生成的外键在数据库中是ut_id,自动添加了下划线+id
class UserType(models.Model):
"""
用户组
"""
title = models.CharField(max_length=32)
def __str__(self):
return "%s-%s" % (self.id, self.title)
class UserInfo(models.Model):
"""
用户表
"""
name = models.CharField(max_length=16)
age = models.IntegerField()
ut = models.ForeignKey('UserType',null=True) # 设置外键
2 注册app
在setting中注册app的名字,下面的都会在数据库中生成表,都有相应的用处,也可在建立工程文件时设置APP,这样可以省略注册appu步骤。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
3 生成表,在控制台中分表输入以下两条命令:
python3 manage.py makemigratons
python3 manage.py migrate
增删改查
# 增加数据
models.UserInfo.objects.create(name='aaa',age='18',ut_id='1') # 注意外键是一行对象,用表中额ut_id
# 查询数据
models.UserInfo.objects.all()
# 过滤
models.UserInfo.objects.filter(name='xxx')
# 更新
models.UserInfo.objects.update(name='ddd')
二、连表操作
1 外键连表
连一张表的情况
UserType表:
UserInfo表:
下面是通过UserInfo表中的外键ut,此时的ut就代表UserType这个表的一行对象,直接用item.ut.title
就可以进行连表查询。
def test(request):
user_list = models.UserInfo.objects.all()
for item in user_list:
print(item.age,item.name,item.ut_id,item.ut.title) # 通过外键进行连表