[問題] 如何動態產生Model

看板Python作者 (BLG_Eric)時間9年前 (2016/06/29 20:40), 編輯推噓0(0012)
留言12則, 4人參與, 最新討論串1/1
各位好 我是剛學Python沒多久的新手 最近正在寫一些Django的後端 目前我已經有一個或多個CSV檔上傳到MEDIA_ROOT 我想問的是 如果接著要匯入到Django的Sqlite裡產生Table並顯示 那Model.py裡對應的class應該如何依CSV的Field數目動態產生? 目前想到的是用Row.Count()之類的做 但是要怎麼產生對應的field或新的model就卡住了 另外我不太知道這個產生field的method應該要放到哪裡寫比較好 請各位指教了 P.S 不能預先寫好各個field再放入 因為之後後面有其他檔案(特別是不知道field數量的CSV)上傳的話 就沒用了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.211.60 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1467204006.A.D0D.html

06/29 21:28, , 1F
最簡單直接用 dict
06/29 21:28, 1F

06/29 21:29, , 2F
喔不對你是要存到資料庫?這樣根本不可能, 你的資料庫
06/29 21:29, 2F

06/29 21:29, , 3F
欄位就不可能動態增減了, 新增欄位是要 migrate 的欸
06/29 21:29, 3F

06/29 21:30, , 4F
你需要改用動態 schema 的存取方式, 例如 JSONField
06/29 21:30, 4F

06/29 21:30, , 5F
06/29 21:30, 5F

06/29 21:32, , 6F
或者 CSV 用 HStoreField 應該也滿合適的, 反正都是字串
06/29 21:32, 6F

06/29 22:36, , 7F
感謝回答 但是不能直接在views或是form上直接用Create
06/29 22:36, 7F

06/29 22:37, , 8F
Table{}之類的方式動態新增嗎?
06/29 22:37, 8F

06/29 23:23, , 9F
除非你動態寫出models.py的內容,不然還是用不了ORM
06/29 23:23, 9F

06/29 23:24, , 10F
單純看csv欄位寫sql新增table一定沒問題,就是很暴力
06/29 23:24, 10F

06/30 14:10, , 11F
用MangoDB會不會比較符合你的需求?
06/30 14:10, 11F

06/30 21:22, , 12F
後來決定用postgresql來做 感謝各位回答
06/30 21:22, 12F
文章代碼(AID): #1NSy6cqD (Python)
文章代碼(AID): #1NSy6cqD (Python)