【发布时间】:2017-11-27 17:29:36
【问题描述】:
我有一个多对多关系的 Event 和 EventCategory 模型。
有 2 个事件类别 - 过去(ID 为 2)和未来(ID 为 1)。
我想通过
找到未来的所有事件models = Event.objects.filter(categories__slug='future')
然后更新它们,使它们都成为过去。
我是否应该创建一个 Event 实例列表,然后从相关表中删除,并插入具有新类别 ID 的实例 - 如果可能的话,只需要一些指导,了解最有效的方法。
非常感谢
【问题讨论】:
-
你可以使用
update(**kwargs),你可以在这里阅读docs.djangoproject.com/en/1.11/ref/models/querysets/#update -
非常感谢您回来。是的,我在我的代码中使用了 update(**kwargs),但我想更新相关表,而不是主表,文档说你不能这样做“update() 方法会立即应用,并且QuerySet 更新的唯一限制是它只能更新模型主表中的列,不能更新相关模型”
-
但是你可以重新考虑你当前的查询,你可以以另一种方式进入你的目标表,例如文档说:
Entry.objects.update(blog__name='foo') # Won't work!但这将Entry.objects.filter(blog__id=1).update(comments_on=True) -
非常感谢您的评论 - 抱歉耽搁了 - 我有时间会看看。
-
您好,感谢您的回复。仍然不确定这将如何让我更新相关表......这显然不起作用 Event.objects.filter(categories__id=1).update(categories__id=2) .. 我如何(有效地)更新 eventcategory_id从这个相关的表?对不起!我在下面发布了我自己的解决方案,但我确信它可以改进。
标签: django