我想验证我的数据库中是否存在变量列表我试过这个:
if Magazine.objects.filter(mag=post.mag_no, prodc_magt_no__in[post.cn1,post.cn2,post.cn3,post.cn4)
但是这个查询集至少检查一个值,我想检查数据库column = prodc_magt_no
中的整个list:post.cn1,post.cn2,post.cn3,post.cn4
我的数据库
ID WORK_YMD LINE_NM MODEL_CODE MAG_NO PRODC_MAGT_NO
118002 20191015 PBA-21F BN94-14806W A656MAF00001 BR10BN9414806WA656MAE4035
118003 20191015 PBA-21F BN94-14806W A656MAF00001 BR10BN9414806WA656MAE4027
118004 20191015 PBA-21F BN94-14806W A656MAF00001 BR10BN9414806WA656MAE4039
118005 20191015 PBA-21F BN94-14806W A656MAF00001 BR10BN9414806WA656MAE4037
118006 20191015 PBA-21F BN94-14806W A656MAF00001 BR10BN9414806WA656MAE4038
注意:mag=post.mag_no
是必需的!
我不确定这是否只是复制粘贴问题,但这行代码无效。它缺少一个=
运算符,并且正确地将列表括起来。在没有看到实际模型的情况下,理论上这是可行的:
if Magazine.objects.filter(mag=post.mag_no, prodc_magt_no__in=[post.cn1,post.cn2,post.cn3,post.cn4]).exists()
exists((将检查该过滤器中是否至少有一个条目,它不会告诉你有多少。正如评论中所建议的那样,count((可以为您做到这一点。
我使用的方法是IF/ELSE语句
if not Magazine.objects.filter(mag_no=post.mag_no, prodc_magt_no__in=[post.cn1]):
messages.warning(request,'CN1 NG')
elif not Magazine.objects.filter(mag_no=post.mag_no, prodc_magt_no__in=[post.cn2]):
messages.warning(request,'CN2 NG')
elif not Magazine.objects.filter(mag_no=post.mag_no, prodc_magt_no__in=[post.cn3]):
messages.warning(request,'CN3 NG')
elif not Magazine.objects.filter(mag_no=post.mag_no, prodc_magt_no__in=[post.cn4]):
messages.warning(request,'CN4 NG')
elif not (post.cn1 == post.cn2, post.cn2 == post.cn3, post.cn3 == post.cn4):
form.save()
messages.success(request, 'Success saved')
return redirect('CnCheckList')
else:
messages.error(request, 'CNs already exist or invalid')