bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

Djangoweb開發系列(二)圖書借閱管理系統之模型設計-創新互聯

一 前言

創新互聯公司成立于2013年,是專業互聯網技術服務公司,擁有項目成都網站制作、成都做網站、外貿營銷網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元平魯做網站,已為上家服務,為平魯各地企業和個人服務,聯系電話:18980820575

在上一篇文章需求分析中,已經大致說明了為什么要開發圖書借閱管理系統、系統應該具備哪些角色或行為、系統如何工作等,對該系統應該有了大致的印象,那接下來的文章就是介紹如何一步步實現。

本文將介紹開發圖書借閱管理系統的第一步,也是關鍵的一步—模型設計。如果將系統精簡,它符合輸入-》驅動-》輸出的模型,具體而言,系統收到http請求(輸入),對請求進行處理(驅動,即邏輯處理+數據庫操作),然后將處理的結果返回前端(輸出),所以在這個模型里,重點是驅動部分(Django名詞:視圖)。乍一看,好像是偏題了,明明說的是Django的模型(model),怎么又扯到視圖(view)了。其實,這里是想把本就緊密的概念先引入進來,混個眼熟,更重要的是,好的模型設計既能適應未來的功能擴展,又能提升性能,是系統開發的基礎。要知道,你設計了什么樣的模型,數據就按什么樣子去存、去取。

二 模型設計思路

根據上一篇文章的分析,系統需要維護兩類數據,即圖書信息和用戶借閱信息,相應的,我們設計兩個模型,圖書模型和用戶借閱模型。至于如何設計模型,需要根據業務需要進行分析,就拿圖書模型而言,可以做如下分析:

1.模型需要有哪些字段?

首先要搞明白的是,在Django里,模型model相對于數據庫的一種表,模型中的每個變量,相當于表中的列,因為Django內置ORM,所以,可以不需要考慮如何建表,如何寫sql進行數據操作,一切就奉行python的編寫習慣。

那么,圖書模型至少需要有以下字段吧:

1) 書名,用于標識圖書;

2)作者名,用于標識圖書,畢竟同名書籍還是很多的;

3)圖書總冊數,作為管理系統,需要知道該圖書總共有多少冊吧;

4)圖書可借冊數,作為借閱系統,需要知道該圖書是否可借,有多少本可借;

5)封面圖,來張圖書靚照,前端頁面不枯燥;

.... 大致,主要的就這么多了,當然,可以根據業務需要繼續拓展,如圖書分類,圖書所屬等等,重在思路,就不在此一一展開了。

2.是否需要設計主鍵或索引?

如果模型未指定主鍵,Django會幫忙增加一個自增加的ID字段作為主鍵,主鍵是唯一索引的,在我們的場景里,任何一個字段值都有可能重復的,所以不設計自定義的主鍵了,就交給Django打理吧,需要索引查詢時,就用ID。

3.是否需要設計外鍵?

Django有三種外鍵關系,即一對一、多對一、多對多,理解起來是這樣的,一對一就好比員工和員工號的關系,一個員工只有一個員工號,一個員工號也只對應一個員工;多對一,比如工廠和汽車的關系,一個工廠可以生產很多汽車,一臺汽車由一個工廠生產;多對多呢,也很常見,比如,一本書可以有多個作者,一個作者也可以寫多本書;

把三種關系套在我們的系統,圖書和借閱用戶的關系就是多對多的,但是,不想把問題搞復雜,在設計上,圖書模型只記錄圖書信息及冊數,根據冊數判斷是否可借;用戶模型用于記錄圖書借閱信息,數據包括借閱人、所借圖書、借還時間等信息,另外,也為了能夠追蹤圖書去向,避免不必要的多表聯查。

三 模型實現

根據以上分析,模型大致如下(模型在Django其實就是定義類):


class Book(models.Model):
    #定義圖書模型
    book_name = models.CharField(max_length=100,verbose_name='書名')
    author_name = models.CharField(max_length=100,verbose_name='作者')
    total_num = models.IntegerField(default=0,verbose_name='總冊數')
    available_num = models.PositiveIntegerField(default=0,verbose_name='可借冊數')
    book_img = models.ImageField(upload_to='static/bookms/img/',verbose_name='封面圖')
    def __str__(self):
        return self.book_name
    class Meta:
        verbose_name = '圖書'
        verbose_name_plural = '圖書'
        #聯合約束
        unique_together = ('book_name','author_name')
        ordering = ['id']

在圖書模型Book類里又定義了員數據Meta,其實它對模型定義是非必須的,但在實際應用中,定義一些元數據還是很有用的,如,ordering可以指定數據按哪個字段排序,unique_together聯合約束,verbose_name用于設置模型直觀、可讀的名字。所以,推薦定義一下。

四 其他資源

關于python學習、分享、交流,筆者開通了微信公眾號【小蟒社區】,感興趣的朋友可以關注下,歡迎加入,建立屬于我們自己的小圈子,一起學python。

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

新聞標題:Djangoweb開發系列(二)圖書借閱管理系統之模型設計-創新互聯
本文URL:http://vcdvsql.cn/article6/cdedig.html

成都網站建設公司_創新互聯,為您提供關鍵詞優化服務器托管、網站建設、企業網站制作、用戶體驗、品牌網站設計

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設公司