作者BlgAtlfans (BLG_Eric)
看板Python
标题[问题] 如何动态产生Model
时间Wed Jun 29 20:40:04 2016
各位好 我是刚学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://webptt.com/cn.aspx?n=bbs/Python/M.1467204006.A.D0D.html
1F:→ uranusjr: 最简单直接用 dict 06/29 21:28
2F:→ uranusjr: 喔不对你是要存到资料库?这样根本不可能, 你的资料库 06/29 21:29
3F:→ uranusjr: 栏位就不可能动态增减了, 新增栏位是要 migrate 的欸 06/29 21:29
4F:→ uranusjr: 你需要改用动态 schema 的存取方式, 例如 JSONField 06/29 21:30
6F:→ uranusjr: 或者 CSV 用 HStoreField 应该也满合适的, 反正都是字串 06/29 21:32
7F:→ BlgAtlfans: 感谢回答 但是不能直接在views或是form上直接用Create 06/29 22:36
8F:→ BlgAtlfans: Table{}之类的方式动态新增吗? 06/29 22:37
9F:→ billy0131: 除非你动态写出models.py的内容,不然还是用不了ORM 06/29 23:23
10F:→ billy0131: 单纯看csv栏位写sql新增table一定没问题,就是很暴力 06/29 23:24
11F:→ ihcaoe: 用MangoDB会不会比较符合你的需求? 06/30 14:10
12F:→ BlgAtlfans: 後来决定用postgresql来做 感谢各位回答 06/30 21:22