V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
brucecobb
V2EX  ›  Python

求 Django 框架的解决方案。

  •  
  •   brucecobb · 2018-03-21 18:07:21 +08:00 · 2935 次点击
    这是一个创建于 2198 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前有的需求:
    1.要求使用 django 框架,管理数据库某些(一部分静态资源链接等)已经存在的表的数据。
    2.能对数据进行增删改查。
    3.图片链接要能显示图片。
    4.随着公司数据量的增大,可能能随时增加新的数据表进行管理。

    目前的思路:
    1.使用 inspectdb 命令反映射出需要管理的数据表,并添加到模型类
    2.使用 django 自带的后台管理系统 admin 进行数据管理。

    目前遇到的困难:
    1. inspectdb 是全部映射处理,因为大部分表是不需要管理爹,所以需要把管理的表手动添加到模型类,如果随着管理表的增多,怎么动态增加模型类?
    2.在 django 中数据表的模型类的数量是固定的,如果有一张表不需要管理了,怎样才能动态的删除这个模型类?
    3.还有没有别的思路?因为目前选择 django 是因为有 admin 这个后台管理的优点,如果有别的解决方案,很乐意聆听。
    11 条回复    2018-03-22 14:12:16 +08:00
    slate
        1
    slate  
       2018-03-21 18:58:59 +08:00 via Android
    个人感觉 inspectdb,所有映射都到 model 没什么影响性能的,新增或者删除表时,重新 inspeectdb 到另一个文件,两个文件一对比 diff 一下,该删的删该加的加
    brucecobb
        2
    brucecobb  
    OP
       2018-03-21 19:13:23 +08:00
    @slate 感谢你的回复,但是重新 inspectdb 后需要重新 migrate,项目在运行的时候好像是办不到的。
    xpresslink
        3
    xpresslink  
       2018-03-21 19:19:51 +08:00
    @brucecobb
    不用,只要指定 table_name, 然后在 content_type 表里自己插个记录。
    ZeroW
        4
    ZeroW  
       2018-03-21 19:24:24 +08:00 via Android
    逆向生成的 model 文件里面会默认添加一个 manage 属性,而且是 false。你不改的话生成的 model 是不会对数据库进行修改操作的,即使你 migrate 也不会产生新表。如果要用 django 操作表,把 manager 改成 true 或删掉都可以。
    brucecobb
        5
    brucecobb  
    OP
       2018-03-21 19:30:22 +08:00
    @zerowang317 你好,感谢你的回复,我刚刚试了一下 python manage.py inspectdb,并没有看见 manger 属性。
    brucecobb
        6
    brucecobb  
    OP
       2018-03-21 19:34:00 +08:00
    @xpresslink 你好,感谢你的回复,我还是不明白 diff 是在干什么,是 git 中的 diff 吗?而且在项目运行的过程中能修改代码吗?
    so1n
        7
    so1n  
       2018-03-21 20:53:03 +08:00
    有个 xadmin 更强大。。
    ksupertu
        8
    ksupertu  
       2018-03-21 21:38:45 +08:00 via iPhone
    inspect db 出来的那个文件下面有个

    class meta:
    Manage=False
    大概是这个,爪机无力,明天在给你补充下;这个意思就是让 django 不管理这张表,migrate 的时候不做任何操作,可以听楼上的用 xadmin,更漂亮点还带导入导出功能,djangosuite 长期没人维护的感觉,不想后台出现这张表的话,admin.py 里不做 site.regesiter 你就看不到了
    brucecobb
        9
    brucecobb  
    OP
       2018-03-21 23:07:30 +08:00
    @ksupertu 非常感谢你的回复,明天我再试试,期待你的补充!
    xpresslink
        10
    xpresslink  
       2018-03-22 00:02:16 +08:00
    @brucecobb 有 个标准库叫 difflib 可以比较字符串或文本文件。

    >>> import difflib
    >>> dif=difflib.Differ()
    >>> list(dif.compare('abc', 'abbc'))
    [' a', ' b', '+ b', ' c']
    >>>
    awli
        11
    awli  
       2018-03-22 14:12:16 +08:00
    您好, 怎么根据表内的图片链接显示多张图片,并且可以显示缩略图呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4958 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 09:49 · PVG 17:49 · LAX 02:49 · JFK 05:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.