11 年前的一 ticket,到在解。。。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
013231
V2EX    Django

11 年前的一 ticket,到在解。。。

  •  
  •   013231 2017-01-13 23:06:09 +08:00 5691 次点击
    这是一个创建于 3240 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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     Solana     2746 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 11:09 PVG 19:09 LAX 03:09 JFK 06:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86