在Django中的另一个应用程序中定义ManyToMany关系

时间:2010-07-02 08:44:18

标签: django m2m

我有应用程序用户和项目,并希望定义另一个名为Roles的应用程序,以便为每个项目扩展django-auth。

我在Roles应用中将ProjectMembership定义为自定义ManyToMany关系模型。但是如何使用through声明在用户或项目模型中定义M2M字段?

所以问题是我们可以从另一个应用程序定义模型的字段吗?

2 个答案:

答案 0 :(得分:1)

我不认为这是可能的,即使有可能,我认为这是一个非常糟糕的解决方案。

我认为您最好的选择是创建具有两个FK的ProjectMembership模型,一个用户,一个用于Project。然后你有一个手动 M2M关系,你只能使用所有不错的Django功能来处理M2M关系。

如果你想要这些功能(不需要它们),那么你应该修改用户或项目模型。

答案 1 :(得分:1)

是的,django会自动为您创建反向关系。使用related_name为其命名!

修改(货币修补)User模型不是一个好主意。如果您想扩展它,请通过以下方式进行扩展: