为了账号安全,请及时绑定邮箱和手机立即绑定

Django 中的排除列表无法更新

Django 中的排除列表无法更新

开心每一天1111 2023-12-05 15:52:53
我遇到了一个问题,无法过滤和更新 Django 中的排除项。我只想更新那些从我的列表变量中排除的项目。以下是我现在得到的所有内容,预先感谢我感谢任何帮助和建议比如说我有一个清单  ['1', '2', '5'] and I want to update all of my data in database exclude from 1,2,5 list and update  all value into "3" views.pydef update(request):if request.method=="POST":    product_ids=request.POST.getlist('id[]')    for id in product_ids:        result = Person.objects.filter(province="DATA_1",municipality="Data_2").exclude(pk =         id).update(paid=3)return render(request, 'dashboard.html')
查看完整描述

1 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

您现在要做的就是每次将一个新的查询集分配给同一个变量,因此您最终会得到最后一个查询集,并且永远不会同时排除所有三个查询集。


您需要做的是排除多个项目:


Person.objects.filter(

    province="DATA_1",municipality="Data_2"

).exclude(

    pk__in=product_ids

).update(paid=3)

请参阅有点令人困惑的文档:


在给定的可迭代中;通常是列表、元组或查询集。这不是常见的用例,但接受字符串(可迭代)。


基本上意味着,__in查找表达式需要一个可迭代对象,并将过滤或排除可迭代对象中的所有匹配项。


NULL 数据 Null 表示没有数据,与 __isnull 的处理方式不同:


Person.objects.filter(

    province="DATA_1",municipality="Data_2"

).exclude(

    street__isnull=True

).update(paid=3)

或者:


Person.objects.filter(

    province="DATA_1",municipality="Data_2", street__isnull=False

).update(paid=3)


查看完整回答
反对 回复 2023-12-05
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信