1

我在我的 django 应用程序中有一个多对多的关系,我非常频繁地使用管理器的“添加”方法(即 album.photos.add() )。

我发现自己现在需要存储一些关于多对多关系的数据,但我不想丢失 add 方法。我可以为“通过”模型上的所有附加字段设置默认值并以某种方式重新实现 add 方法吗?

我对自定义管理器了解不多,但我怀疑这可能是正确的地方。

更新:

一直在阅读自定义管理器。当我将“通过”参数添加到我的多对多字段时,也许我可以阻止添加/删除/等被禁用?

有谁知道这是怎么做到的吗?

4

1 回答 1

2

最简单的方法是向相册添加一个方法(即,album.add_photo()),该方法处理元数据并手动创建正确链接的照片实例。

如果你想让所有的时髦,你可以为照片编写一个自定义管理器,将其设为默认值(即第一个分配的管理器),设置use_for_related_fields = True,并给它一个 add() 能够正确设置的方法关系的默认元数据。

旁白:对于 Django 来说,使其通用化似乎并不难;当有一个直通表时,不要删除 add() 方法,只需让 add() 接受任意 kwargs 并将它们视为直通表的数据。

于 2009-06-25T17:07:40.757 回答