Django笔记---数据库设计
建立與數(shù)據(jù)庫的連接
開發(fā)第一步首先建立與數(shù)據(jù)庫的連接,否則測試都用不了。 在 settings 中的 DATABASES ,代碼如下:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'database_name','USER': 'your_name','PASSWORD': 'your_password','HOST': '127.0.0.1',} } 復(fù)制代碼然后點(diǎn)擊 TOOLS--->Run manage.py Task 輸入命令:
makemigrations 復(fù)制代碼生成 Django 項(xiàng)目默認(rèn)的數(shù)據(jù)表,然后使用命令:
migrate 復(fù)制代碼將生成的數(shù)據(jù)表上傳到數(shù)據(jù)庫,這時候可以在數(shù)據(jù)庫中看到那些表。
設(shè)計 app
設(shè)計 user app
在 web 系統(tǒng)中,user 大多是首先被設(shè)計的,因?yàn)橛脩舻膶傩栽陂_發(fā)之前就很清楚。點(diǎn)擊 Task 使用命令:
startapp users 復(fù)制代碼在 settings 中的 INSTALLED_APPS 中添加新建的 app,只要是 app 就都要添加到 settings 中。Django 默認(rèn)生成的數(shù)據(jù)表中有 user 表,但是大多情況下默認(rèn)的表字段是不夠用的,所以我們都需要在表中添加字段。進(jìn)入 users 下的 models.py 中添加我的需要的字段。需要繼承默認(rèn)的 user 表。代碼如下:
from django.db import models from django.contrib.auth.models import AbstractUserclass UserProfile(AbstractUser):nick_name = models.CharField(max_length=50, verbose_name=u"昵稱", default="")birday = models.DateField(verbose_name=u"生日", null=True, blank=True)gender = models.CharField(choices=(("male", u'男'), ('female', u'女')), default='female', max_length=6)address = models.CharField(max_length=100, default=u'')mobile = models.CharField(max_length=11, null=True, blank=True)image = models.ImageField(upload_to='image/%Y/%m', default=u'image/default.png', max_length=100)class Meta:verbose_name = u'用戶信息'verbose_name_plural = verbose_namedef __unciode__(self):return self.username復(fù)制代碼A model is the single, definitive source of information about your data. It contains the essential fields and behaviors of the data you’re storing. Generally, each model maps to a single database table.
- Each model is a Python class that subclasses django.db.models.Model.
- Each attribute of the model represents a database field. -------------Django官網(wǎng)文檔
模型是你的數(shù)據(jù)的唯一的、權(quán)威的信息源。它包含你所儲存數(shù)據(jù)的必要字段和行為。通常,每個模型對應(yīng)數(shù)據(jù)庫中唯一的一張表。
- 每個模型都是 django.db.models.Model 的一個 Python 子類。
- 模型的每個屬性都表示為數(shù)據(jù)庫中的一個字段。
根據(jù)官方文檔,我們可以知道,models 可能就是數(shù)據(jù)庫抽象,可以直接操作 models 從而改變數(shù)據(jù)庫里的信息。
models 中有很多函數(shù),文檔的鏈接已經(jīng)給出,這里就不一一列舉了,后面的內(nèi)容都是建立在看過文檔中對于 models 描述的基礎(chǔ)上。我還是貼出對于初學(xué)者有幫助的 Django1.8 版本的中文文檔。
然后重載 settings 中的 AUTH_USER_MODEL,代碼如下:
AUTH_USER_MODEL = 'users.UserProfile' 復(fù)制代碼這時候可以使用生成數(shù)據(jù)表和提交數(shù)據(jù)表的命令,這時候可以在數(shù)據(jù)庫的 user_profile 表中看到我們添加的字段和原有字段。
驗(yàn)證碼功能只會和 user 產(chǎn)生關(guān)系,所以放在 user 中實(shí)現(xiàn)。首頁輪播圖其實(shí)和 user 沒有太大關(guān)系,但是因?yàn)楣δ芊浅*?dú)立,所以先放在 user 中實(shí)現(xiàn)。 代碼和 UserProfile 類似,但是就無需繼承 AbstractUser,因?yàn)閿?shù)據(jù)庫中沒有默認(rèn)的驗(yàn)證碼和輪播圖的表,所以繼承 models.Model 新建表。
設(shè)計 course app
因?yàn)樵谛枨蠓治鲭A段 course 的屬性就知道了。直接添加,注意,有的字段有外鍵,外鍵先實(shí)現(xiàn),不然沒法測試。
設(shè)計 organization app
同上
設(shè)計 operation app
operation 存在的意義是防止出現(xiàn)循環(huán),比如課程評論有用戶信息,用戶可以添加評論。沒有建立在課程和用戶之上的 app 不好搞。
總結(jié)
以上是生活随笔為你收集整理的Django笔记---数据库设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac下提示APP已损坏,打不开,请移至
- 下一篇: 缓存浅析