[问题] 如何动态产生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