首页 > 代码库 > Django学习系列之模型
Django学习系列之模型
Django ORM简介
介绍
关系对象映射(Object Relational Mapping)
Django中遵循Code first的原则,即根据代码中定义的类生成数据库
ORM中:
- 我们写的类表示数据库的表名
- 根据这个类创建的对象是表结构
Django ORM
一对多关系例子
定义urls.py
from django.conf.urls import urlfrom django.contrib import admin #导入django adminadmin.autodiscover() urlpatterns = [ url(r‘^admin/‘, admin.site.urls), #django admin 访问路径]
定义models.py
from django.db import models# Create your models here.class userType(models.Model): #选择用户类型表 name = models.CharField(max_length=32) def __str__(self): #让获取到的数据显示为字符串(选择用户类型的时候显示的不是字符串格式(举例:普通用户or超级用户),而是object XXXX) return self.nameclass userInfo(models.Model): #创建用户表 nid = models.AutoField(primary_key=True) #如果不手动写django会自动创建这个自增列 name = models.CharField(max_length=30) #列 名 email = models.EmailField(max_length=30) #列 名 memo = models.TextField() #列 名 user_type = models.ForeignKey(userType,null=True,blank=True) #外键是userType表,详情请看创建用户是选择数据类型 #blank表示在Web界面上的user_type这个选项可以为空
创建数据库
F:\PyCharm\dj>python3 manage.py makemigrationsF:\PyCharm\dj>python3 manage.py migrate
定义admin.py
from django.contrib import adminfrom hello import models #导入app里的models# Register your models here.admin.site.register(models.userInfo) #对应models里的userinfo表admin.site.register(models.userType) #对应models里的usertype表
Web访问
注意:图中标记的地方为models里创建的两个表
创建UserType
创建用户
多对多关系例子
from django.db import models# Create your models here.#########这是第一种方式让两个表关联起来,这种方式的好处就是操作表的时候可以直接操作class B2G(models.Model): boy = models.ForeignKey(‘Boy‘) girl = models.ForeignKey(‘Girl‘)# 假如这个表里有张三、李四、王五,三个人class Person(models.Model): name = models.CharField(max_length=32)# 假如这个表里有吃饭、打球、游泳三个爱好class aihao(models.Model): name = models.CharField(max_length=32)# 现在要实现一个功能,一个人可以选择多个爱好,一个爱好可以被多个人选择################这是第二种方式让两个表关联起来,这种方法需要通过间接的方式操作数据库 f = models.ManyToManyField(Person)
一对一关系例子
# 这个表里有 普通用户、超级用户两个用户类型class userType(models.Model): name = models.CharField(max_length=32) def __str__(self): return self.name# 这个表里有张三、李四两个用户class userInfo(models.Model): nid = models.AutoField(primary_key=True) name = models.CharField(max_length=30) email = models.EmailField(max_length=30) memo = models.TextField() user_type = models.OneToOneField(userType,null=True,blank=True)# 现在要实现:# 如果张三选普通用户之后,李四就不能选择普通用户# 如果李四选超级用户之后,张三就不能选择超级用户
Django学习系列之模型
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。