[問題] 如何動態產生Model

作者: BlgAtlfans (BLG_Eric)   2016-06-29 20:40:04
各位好 我是剛學Python沒多久的新手
最近正在寫一些Django的後端
目前我已經有一個或多個CSV檔上傳到MEDIA_ROOT
我想問的是
如果接著要匯入到Django的Sqlite裡產生Table並顯示
那Model.py裡對應的class應該如何依CSV的Field數目動態產生?
目前想到的是用Row.Count()之類的做
但是要怎麼產生對應的field或新的model就卡住了
另外我不太知道這個產生field的method應該要放到哪裡寫比較好
請各位指教了
P.S 不能預先寫好各個field再放入
因為之後後面有其他檔案(特別是不知道field數量的CSV)上傳的話
就沒用了
作者: uranusjr (←這人是超級笨蛋)   2016-06-29 21:28:00
最簡單直接用 dict喔不對你是要存到資料庫?這樣根本不可能, 你的資料庫欄位就不可能動態增減了, 新增欄位是要 migrate 的欸你需要改用動態 schema 的存取方式, 例如 JSONFieldhttp://bit.ly/29c7ONj或者 CSV 用 HStoreField 應該也滿合適的, 反正都是字串
作者: BlgAtlfans (BLG_Eric)   2016-06-29 22:36:00
感謝回答 但是不能直接在views或是form上直接用CreateTable{}之類的方式動態新增嗎?
作者: billy0131 (Pluto)   2016-06-29 23:23:00
除非你動態寫出models.py的內容,不然還是用不了ORM單純看csv欄位寫sql新增table一定沒問題,就是很暴力
作者: ihcaoe (Ihc)   2016-06-30 14:10:00
用MangoDB會不會比較符合你的需求?
作者: BlgAtlfans (BLG_Eric)   2016-06-30 21:22:00
後來決定用postgresql來做 感謝各位回答

Links booklink

Contact Us: admin [ a t ] ucptt.com