我试图更新某些文章的created_by和edited_by,其中包含与用户的ManytoMany关系,并向其添加另一个用户。
我遇到了
MyModel.objects.filter(pk=some_value).update(field1='some value')
作为使用单个查询进行更新的方法,还有一种方法可以使用单个查询更新ManytoMany吗?
Article.objects.filter(Q(created_by__in=[deleted_user_id])| Q(edited_by__in=[deleted_user_id])).update(?)
我应该更换什么"?"用? 假设我需要添加" replacement_user_id"对过滤器返回的所有文章。
我想我们可以通过查询"通过"模特也许。
答案 0 :(得分:0)
使用更新方法无法做到这一点:
您只能使用此设置非关系字段和ForeignKey字段 方法。要更新非关系字段,请将新值提供为 不变。要更新ForeignKey字段,请将新值设置为新值 您想要指向的模型实例。
了解详情here
更新:
您可以添加多个对象,例如:
articles = Article.objects.filter(Q(created_by__in=[deleted_user_id])| Q(edited_by__in=[deleted_user_id]))
created_by_objs = User.objects.filter(...)
edited_by_objs = User.objects.filter(...)
for article in articles:
#article.created_by.clear() uncomment if needed
article.created_by.add(*created_by_objs)
#article.edited_by.clear() uncomment if needed
article.edited_by.add(*edited_by_objs)
了解详情here