Django文档说你可以在任何一方的模型中放置多对多的字段,但不是两者都有。显示Pizzas和Toppings的例子说它更多"正常"想想比萨饼上的浇头而不是想到哪种比萨饼是打顶的,所以把田地放在披萨模型中。 OK ......
但是,在我的应用程序中跟踪权限和组,这不一定是真的。应用程序在权限表中有多对多,表示哪些组具有该权限。您似乎也应该能够查看某个组并查看它具有的权限。理论上,这将使用相同的连接表。
无法在群组模型中添加多对多字段并指定现有的permission_group连接表吗?这是否会导致问题,因为它直接违反了ManyToMany文档中的建议?
...谢谢
答案 0 :(得分:1)
我无法真正理解它的原因。触摸电气线的哪一端并不重要 - 最终结果是一样的。在数据库级别上发生的情况完全相同,而不考虑在Django中添加字段的位置。你仍然可以从任何一方进行反向查询(查看有关related_name
设置的文档,方便),这样你就可以得到两个
a)具有一些特定权限的所有人员
b)用户拥有的所有权限
如果你按照你的建议尝试,如果Django允许的话,你最终会得到两个并行的M2M字段 - 我想它确实如此,但这根本没有任何意义。这就像是同时通过两部手机与同一个人交谈 - 你为什么要这样做?唐'吨
。
正如帕特里克所说,Django有一个全面的权限系统,所以你可能只想检查它,也许它可以满足你的需求,而不需要你付出任何努力。
答案 1 :(得分:1)
如果没有,你就会有所区别。多对多的要点是它可以从关系的任何一方自动访问 ; Django为你做到了。文档的重点是差异只是语义上的差异;在他们提到的情况下,浇头属于比萨饼。但即使这样做,你仍然可以从每个顶部访问比萨饼。