Django笔记---数据库设计
建立與數據庫的連接
開發第一步首先建立與數據庫的連接,否則測試都用不了。 在 settings 中的 DATABASES ,代碼如下:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'database_name','USER': 'your_name','PASSWORD': 'your_password','HOST': '127.0.0.1',} } 復制代碼然后點擊 TOOLS--->Run manage.py Task 輸入命令:
makemigrations 復制代碼生成 Django 項目默認的數據表,然后使用命令:
migrate 復制代碼將生成的數據表上傳到數據庫,這時候可以在數據庫中看到那些表。
設計 app
設計 user app
在 web 系統中,user 大多是首先被設計的,因為用戶的屬性在開發之前就很清楚。點擊 Task 使用命令:
startapp users 復制代碼在 settings 中的 INSTALLED_APPS 中添加新建的 app,只要是 app 就都要添加到 settings 中。Django 默認生成的數據表中有 user 表,但是大多情況下默認的表字段是不夠用的,所以我們都需要在表中添加字段。進入 users 下的 models.py 中添加我的需要的字段。需要繼承默認的 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復制代碼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官網文檔
模型是你的數據的唯一的、權威的信息源。它包含你所儲存數據的必要字段和行為。通常,每個模型對應數據庫中唯一的一張表。
- 每個模型都是 django.db.models.Model 的一個 Python 子類。
- 模型的每個屬性都表示為數據庫中的一個字段。
根據官方文檔,我們可以知道,models 可能就是數據庫抽象,可以直接操作 models 從而改變數據庫里的信息。
models 中有很多函數,文檔的鏈接已經給出,這里就不一一列舉了,后面的內容都是建立在看過文檔中對于 models 描述的基礎上。我還是貼出對于初學者有幫助的 Django1.8 版本的中文文檔。
然后重載 settings 中的 AUTH_USER_MODEL,代碼如下:
AUTH_USER_MODEL = 'users.UserProfile' 復制代碼這時候可以使用生成數據表和提交數據表的命令,這時候可以在數據庫的 user_profile 表中看到我們添加的字段和原有字段。
驗證碼功能只會和 user 產生關系,所以放在 user 中實現。首頁輪播圖其實和 user 沒有太大關系,但是因為功能非常獨立,所以先放在 user 中實現。 代碼和 UserProfile 類似,但是就無需繼承 AbstractUser,因為數據庫中沒有默認的驗證碼和輪播圖的表,所以繼承 models.Model 新建表。
設計 course app
因為在需求分析階段 course 的屬性就知道了。直接添加,注意,有的字段有外鍵,外鍵先實現,不然沒法測試。
設計 organization app
同上
設計 operation app
operation 存在的意義是防止出現循環,比如課程評論有用戶信息,用戶可以添加評論。沒有建立在課程和用戶之上的 app 不好搞。
總結
以上是生活随笔為你收集整理的Django笔记---数据库设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac下提示APP已损坏,打不开,请移至
- 下一篇: 彻底完全卸载 SQL Server 20