【问题标题】:Python (DJango) - Update more than one row of a model simultaneouslyPython (DJango) - 同时更新多行模型
【发布时间】: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 怎么办?

标签: python django view django-views


【解决方案1】:

您可以使用两个选项。我正在使用帖子示例。

  1. 用相同的值更新所有标题Post.objects.all().update(title="title")

  2. 用不同的值更新标题

    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'])
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    相关资源
    最近更新 更多