簡體   English   中英

通過 querySet django 檢查我的數據庫中是否存在列表

[英]Check if a list exists in my database by querySet django

我想驗證我的數據庫中是否存在變量列表我試過這個:

if Magazine.objects.filter(mag=post.mag_no, prodc_magt_no__in[post.cn1,post.cn2,post.cn3,post.cn4)

但是這個查詢集至少檢查一個值,我想檢查整個list:post.cn1,post.cn2,post.cn3,post.cn4在我的數據庫column = prodc_magt_no

我的數據庫

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM