ورود

View Full Version : سوال: ارسال یک رشته به عنوان پارامتر کوئری ؟؟؟؟؟؟؟؟؟؟



malihehshajari
یک شنبه 06 بهمن 1392, 15:00 عصر
سلام
من کد زیر رو نوشتم :



str_1 = ''
if From_Date_Response != '' and Until_Date_Response != '':
str_1 = "answering_date__range = (From_Date_Response , Until_Date_Response )"
if From_Date_Reception != '' and Until_Date_Reception != '' :
if str_1 != '' :
str_1 = str_1 + ", date_acceptance__range = (From_Date_Reception , Until_Date_Reception)"
else :
str_1 = " date_acceptance__range = (From_Date_Reception , Until_Date_Reception)"
if From_Number_Reception != '' and Until_Number_Reception != '' :
if str_1 != '' :
str_1 = str_1 + ",id_reception__range = (int(From_Number_Reception) , int (Until_Number_Reception))"
else :
str_1 = "id_reception__range = (int(From_Number_Reception) , int (Until_Number_Reception))"



حالا با این رشته که ساختم کوئری زیر رو نوشتم :



result_test = Reception.objects.filter(str_1)



خطا میده



too many values to unpack


من تعداد شرطایی که دارم زیاده و باید اینکار رو انجام بدم تو دات نت مشکلی نداره اینجا چطوریه ؟؟؟؟؟؟؟؟؟؟
با تشکر

n.nowroozi
یک شنبه 06 بهمن 1392, 15:24 عصر
باید به کوئری به چشم یک شی نگاه کنی یک چیزی مثل این باید کارت رو راه بندازه:


result_test = Reception.objects.all()
if From_Date_Response != '' and Until_Date_Response != '':
result_test = result_test.filter(answering_date__range = (From_Date_Response , Until_Date_Response ))
if From_Date_Reception != '' and Until_Date_Reception != '' :
if str_1 != '' :
result_test = result_test.filter(date_acceptance__range = (From_Date_Reception , Until_Date_Reception))
else :
result_test = result_test.filter(date_acceptance__range = (From_Date_Reception , Until_Date_Reception))
if From_Number_Reception != '' and Until_Number_Reception != '' :
if str_1 != '' :
result_test = result_test.filter(id_reception__range = (int(From_Number_Reception) , int (Until_Number_Reception)))
else :
result_test = result_test.filter(id_reception__range = (int(From_Number_Reception) , int (Until_Number_Reception)))

n.nowroozi
یک شنبه 06 بهمن 1392, 15:52 عصر
البته راه دوم و بهترش اینه :)

kwargs= {}
result_test = Reception.objects.all()
if From_Date_Response != '' and Until_Date_Response != '':
kwargs['answering_date__range'] = (From_Date_Response , Until_Date_Response )
if From_Date_Reception != '' and Until_Date_Reception != '' :
if str_1 != '' :
kwargs['date_acceptance__range'] = (From_Date_Reception , Until_Date_Reception)
else :
kwargs['date_acceptance__range'] = (From_Date_Reception , Until_Date_Reception)
if From_Number_Reception != '' and Until_Number_Reception != '' :
if str_1 != '' :
kwargs['id_reception__range'] = (int(From_Number_Reception) , int (Until_Number_Reception))
else :
kwargs['id_reception__range'] = (int(From_Number_Reception) , int (Until_Number_Reception))
result_test = Reception.objects.filter(**kwargs)

mrhashem
جمعه 11 مرداد 1398, 16:36 عصر
ممنون از n.nowroozi (http://barnamenevis.org/member.php?301326-n-nowroozi)

چقد گشتم اینو پیدا کنم تشکر.

لوله بازکنی (https://mrplumber.ir/)