V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
013231
V2EX  ›  Django

11 年前的一個 ticket,到現在還沒解決。。。

  •  
  •   013231 · 2017-01-13 23:06:09 +08:00 · 5143 次点击
    这是一个创建于 2874 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://code.djangoproject.com/ticket/897

    Bi-Directional ManyToMany in Admin
    14 条回复    2018-07-21 06:16:33 +08:00
    julyclyde
        1
    julyclyde  
       2017-01-14 00:12:29 +08:00
    不是为 django 开脱
    数据库里如果出现 many to many 基本上就是设计错误
    013231
        2
    013231  
    OP
       2017-01-14 00:25:15 +08:00
    @julyclyde 为什么?
    shoaly
        3
    shoaly  
       2017-01-14 00:45:27 +08:00
    文章 article_id , 标记 tag_id, 一篇文章可以多个 tag_id, 同一个 tag_id 也可以对应多个 article_id, m:m ?
    zonghua
        4
    zonghua  
       2017-01-14 00:48:54 +08:00 via iPhone
    @013231 查询吃力
    latyas
        5
    latyas  
       2017-01-14 01:02:05 +08:00
    manytomany 有啥错?
    django 也是通过中间表来做映射的,也就是多个 JOIN 罢了,除非有强性能要求不允许数据库中出现 JOIN 或者限制 JOIN 次数。

    而且这个和 M2M 没关系吧 这是问 django admin 的问题
    013231
        6
    013231  
    OP
       2017-01-14 01:34:31 +08:00
    @zonghua 多表联合查询是可能有性能问题, 但不能说这是设计错误啊.
    013231
        7
    013231  
    OP
       2017-01-14 01:39:23 +08:00
    @latyas 没错, 这就是 django.contrib.admin 的问题, 和数据库结构没关系.
    julyclyde
        8
    julyclyde  
       2017-01-14 02:16:19 +08:00
    @013231 正确的做法是额外有个 m*n 表,而不是直接在表上做 many to many
    Kilerd
        9
    Kilerd  
       2017-01-14 09:15:37 +08:00 via iPhone
    由此证明了 flask 的优越性 😋😋😋
    chaleaoch
        10
    chaleaoch  
       2017-01-14 21:36:09 +08:00
    @julyclyde 区别是?
    kankana
        11
    kankana  
       2017-01-15 09:45:50 +08:00 via iPhone
    是说需要 pivot 表吧
    qwer1234asdf
        12
    qwer1234asdf  
       2017-01-15 13:16:25 +08:00 via iPhone
    可以参考下 cakephp 模型的设计, 1.2 版的,新版本的不知道,没用过……
    其实,这不应该是框架的问题, flask 也会出现 many to many 的情形,可以弄一个中间表
    msg7086
        13
    msg7086  
       2017-01-16 06:24:11 +08:00
    @julyclyde 你这话挺有问题的。
    Many to many 的标准做法就是加一张关联表。
    「数据库里如果出现 many to many 基本上就是设计错误」是什么鬼。
    dcoder
        14
    dcoder  
       2018-07-21 06:16:33 +08:00
    @julyclyde

    「数据库里如果出现 many to many 基本上就是设计错误」是什么鬼。+1

    "正确的做法是额外有个 m*n 表,而不是直接在表上做 many to many" 这又是什么意思?
    Django 的 many to many 本身就会建立一个额外的表来存关系的呀?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1370 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:39 · PVG 07:39 · LAX 15:39 · JFK 18:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.