【发布时间】:2010-07-02 08:44:17
【问题描述】:
我有应用程序用户和项目,并想定义另一个名为角色的应用程序,用于为每个项目扩展 django-auth。
我在 Roles 应用程序中将 ProjectMembership 定义为自定义的 ManyToMany 关系模型。但是如何使用through 声明在 User 或 Project 模型中定义 M2M 字段?
那么问题是我们可以从另一个应用程序中定义模型的字段吗?
【问题讨论】:
我有应用程序用户和项目,并想定义另一个名为角色的应用程序,用于为每个项目扩展 django-auth。
我在 Roles 应用程序中将 ProjectMembership 定义为自定义的 ManyToMany 关系模型。但是如何使用through 声明在 User 或 Project 模型中定义 M2M 字段?
那么问题是我们可以从另一个应用程序中定义模型的字段吗?
【问题讨论】:
我认为这是不可能的,即使有可能在我看来也是一个非常糟糕的解决方案。
我认为您最好的选择是创建具有两个 FK 的 ProjectMembership 模型,一个给用户,一个给项目。然后你有一个手动 M2M 关系,你不能使用所有好的 Django 特性来处理 M2M 关系。
如果您想要这些功能(不需要它们),那么您应该修改 User 或 Project 模型。
【讨论】:
是的,你可以,django 会自动为你创建反向关系。使用related_name为其命名!
修改(资金修补)User 模型不是一个好主意。如果您想扩展它,请通过以下方式进行:
【讨论】: