Django批量更新为多对多的关系

时间:2017-11-27 17:29:37

标签: django

我和Event和EventCategory模型有多对多的关系。

有2个事件类别 - 过去(ID为2)和将来(ID为1)。

我想通过

找到将来的所有活动
models = Event.objects.filter(categories__slug='future')

然后更新它们以便它们都在过去。

我是否应该创建一个Event实例列表,然后从相关表中删除,并插入具有新类别ID的实例 - 如果可能的话,只需要一些指导,以最有效的方式执行此操作。

非常感谢

1 个答案:

答案 0 :(得分:-1)

我不确定这是否是满足我需求的最有效解决方案,但它确实有效:

找到我想要与事件关联的新类别(这是"过去"类别)

cat = EventCategory.objects.get(pk=2)

以下是我现有的关系,其中1是未来类别的ID

models = Event.objects.filter(categories__id=1)

for model in models:
    model.categories.clear()
    model.categories.add(cat)

现在相关表格中的所有内容都属于过去的类别。