数据库设计是整个设计最基础的部分
1、django app的设计:根据系统的需求分析来设计django的app,django的开发是基于app来开发的,所以第一步就是设计app。
2、各app model 的设计:也就是设计对应的数据表
3、数据表的生成以及修改
使用在线教育系统作为实例:
userprofile的设计:在任何一个系统中,user表都是第一个被设计的,django会产生几个默认用户数据表
在设计我们自己的user表的时候,我们希望能生成自己的表又希望能够继承django的默认表,此时,我们可以继承AbstractUser(
from django.contrib.auth.models import AbstractUser
)
class UserProfile(AbstractUser):
pass
定义完UserProfile表之后,我们需要在setting.py文件中注册users app,
INSTALLED_APPS = [
'users',
]
并且定义一个方法AUTH_USER_MODEL = "users.UserProfile",注意这里是使用users.UserProfile而不是users.model.UserProfile
(1)user model的设计:
我们在设计django app的时候,每个app中都有model,model文件中很有可能用到其他app文件当中的model,这就会很容易引入循环引用的问题,为了解决这个问题,很常用的一种方法就是使用分层model的方法,也就是上一层可以引用下一层
的model,如下:
注:PEP8的在引入的规范是第一个区域是导入Python自带的包,然后隔一行的第二个区域是第三方的包,如django,然后隔一行的第三个区域是我们自己定义的一些model
(2)course model 的编写:一个数据可能和另一个数据是一对多的关系,但是一张表存储不了这种关系,所以就需要把这两个数据分别存储在不同的数据表当中,这样就会引入外键的关系。
model的FileFIield,定义了这个字段就可以在后台系统中生成上传文件的按钮
(3)oganization model的编写:
(4)operation的model编写:
所有的APP编写完成之后,我们可以建立Python的apps包,把所有的app都放到这个apps中,把所有的APP放到apps之后,会发现各个app的model的引用可能会出现红线,说明我们找不到这些引用的包,所以需要我们在setting.py文件当中
把apps加入Python的搜索目录之下,
import sys
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))