通过querySet django检查我的数据库中是否存在列表



我想验证我的数据库中是否存在变量列表我试过这个:

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