大家好![]()
用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'),)
基本上就是這樣
給大家參考囉![]()

留言板
歡迎留下建議與分享!希望一起交流!感恩!