V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
013231
V2EX  ›  Django

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

  •  
  •   013231 · Jan 13, 2017 · 5970 views
    This topic created in 3391 days ago, the information mentioned may be changed or developed.
    https://code.djangoproject.com/ticket/897

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

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

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

    "正确的做法是额外有个 m*n 表,而不是直接在表上做 many to many" 这又是什么意思?
    Django 的 many to many 本身就会建立一个额外的表来存关系的呀?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5849 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 06:38 · PVG 14:38 · LAX 23:38 · JFK 02:38
    ♥ Do have faith in what you're doing.