django数据库的设计


数据库设计是整个设计最基础的部分

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'))

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM