Django中特定于用户的模型

时间:2009-08-20 07:50:35

标签: python django django-models

我有一个包含项目的模型,它有许多不同的字段。还有另一个模型使用m2m-relation为每个用户分配一组该字段。

我想实现,最终,每个用户都可以访问项目模型的一组已定义的字段,并且他只在视图中看到这些字段,他只能编辑这些字段等。 有没有通用的方法来设置它?

2 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是将Item模型分解为可单独分配给用户的部分。如果您有固定的用户类型(管理员,客户,团队等),他们总能看到相同的字段集,则这些部分将是整组字段。如果它非常动态,并且您希望能够为每个用户设置单独的字段,则每个字段都是它自己的一部分。

这样,你就会得到一个元项目,它只包含部分可以引用的Id。这将各部分结合在一起。然后,您将用户不映射到项目,而是映射到零件,并从零件的公共ID重新构建项目视图。

答案 1 :(得分:0)

第二种方法是不在模型层中包含过滤。例如,您将模型图层上的映射保留原样,并为每个用户检索完整的项目字段集。然后通过实现规则的过滤器传递项目。

哪种方法更适合您取决于您​​希望如何过滤。如果它是固定类型的用户,我可能会实现一个基于规则的后处理器,如果它非常动态,我建议我的earlier answer方法。将过滤规则放在模型中的另一个原因是,如果要在无法重用过滤器引擎的应用程序中重用模型(例如,如果您的应用程序使用不同语言共享同一个数据库)。