我遇到了一个问题,无法过滤和更新 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)
添加回答
举报
0/150
提交
取消