Python (DJango) - 同时更新多行模型
Posted
技术标签:
【中文标题】Python (DJango) - 同时更新多行模型【英文标题】:Python (DJango) - Update more than one row of a model simultaneously 【发布时间】:2019-12-20 17:35:16 【问题描述】:我有一个表单/视图,允许用户注册任意数量的语言。现在我正在尝试提取我的登录用户已注册的所有语言,并允许他同时更改每个字段、同一页面、同一视图... 我怎样才能做到这一点?有人有什么想法吗?
例如:
registered rows
ID User Language
1 A english
2 A italian
-->
updated rows
ID User Language
1 A Portuguese
2 A Mandarin
我正在尝试这种方式,但我需要通过 id 传递 id:
def MyUpdateView(request, item):
index = get_object_or_404(MyModel, pk=item)
temp = MyMode.objects.filter(usuario=request.user).values()
if request.method == 'GET':
formset = FormFormset(request.GET or None, prefix='idiomas')
elif request.method == 'POST':
formset = FormFormset(request.POST, prefix='idiomas')
if formset.is_valid():
for form in formset:
language = form.cleaned_data.get('language')
level = form.cleaned_data.get('level')
if language and level:
MyMode.objects.filter(usuario=request.user, id=item).update(language=language, level=level)
return render(request, 'somepage.html',
'formset': formset,
'temp': temp,
)
【问题讨论】:
您希望执行什么样的更新操作?除此之外,如果您的表中有更多语言对应单个用户a
怎么办?
【参考方案1】:
您可以使用两个选项。我正在使用帖子示例。
用相同的值更新所有标题Post.objects.all().update(title="title")
用不同的值更新标题
posts = Post.objects.all()
for post in posts.iterator():
# Use your condition to set title
post.title = "your title"
# Save all objects in 1 query
Post.objects.bulk_update(posts, ['title'])
【讨论】:
以上是关于Python (DJango) - 同时更新多行模型的主要内容,如果未能解决你的问题,请参考以下文章