大家好
用python的django開發也有一段時間了
對這架構也算是有懂一點皮毛
大致講解一下我設計表單的作法
先說一下ORM的方式
ORM就是使用物件設計來取代傳統的SQL指令方式來建構資料表與query
一開始用肯定會不習慣
但是習慣之後會覺得...還可以
優點是程式可讀性高
可以繼承,修改,然後不用擔心語法錯誤問題
缺點嘛...
遇到很複雜的SQL時候
就會很頭痛了
以下是我DB中的一個範例
#MRI報告畫圖 #定義類別名稱 class DicomMriFilesDraw (models.Model): #最好設定一個主KEY,否則 django 會自動產生一個id欄位出來,另外是,如果沒有NUMBER類型的主KEY,django 還是會自動產生一個id欄位出來 #好像是ORM架構都會這樣,這是為了確保每一個ROW都有一個唯一KEY mriFid = models.AutoField(primary_key=True, max_length=10, null=False, verbose_name="MRI報告畫圖流水編號(PK)") #外鍵: 這邊的DicomMriReports是外鍵,也可以叫母表單的類別 mriRid = models.ForeignKey( DicomMriReports, #外鍵名稱: JOIN時候會用到 related_name = 'mriRidInDicomMriFilesDrawToDicomMriReports', #刪除時動作 通常就這個CASCADE on_delete = models.CASCADE, #指定名稱,沒指定django又會幫你改名子,頭疼阿 db_column = 'mriRid', ) fid = models.ForeignKey( DicomFiles, related_name = 'fidInDicomMriFilesDrawToDicomFiles', on_delete = models.CASCADE, db_column = 'fid', ) #Text類型資料 imageBase64 = models.TextField(verbose_name="畫圖資料") #文字類型資料 systemUser = models.CharField(max_length=10, default='', null=False ,verbose_name="匯入/異動人員", db_index=True) #時間類型資料 systemTime = models.DateTimeField(auto_now_add=True, null=False ,verbose_name="匯入/異動時間", db_index=True) #其他設定 class Meta: #指定DN名稱,沒指定django又會調整 db_table = "DicomMriFilesDraw" #增加 unique key 唯一值,驗證資料(注意. 這不是primary key喔) unique_together = (('fid', 'systemUser'),)
基本上就是這樣
給大家參考囉
留言板
歡迎留下建議與分享!希望一起交流!感恩!