表中數(shù)據(jù)varchar和float轉(zhuǎn)化對filter結(jié)果的影響求助
表中某字段比如time_cost類型為varchar,filter查詢時篩選time_cost__gte='30'會導(dǎo)致結(jié)果不準,很多實際time_cost小于30的也被放入結(jié)果中,是和varchar和float轉(zhuǎn)化有關(guān)系嗎 怎么規(guī)避這種問題呢
表中某字段比如time_cost類型為varchar,filter查詢時篩選time_cost__gte='30'會導(dǎo)致結(jié)果不準,很多實際time_cost小于30的也被放入結(jié)果中,是和varchar和float轉(zhuǎn)化有關(guān)系嗎 怎么規(guī)避這種問題呢
2020-04-09
舉報
2020-04-15
不錯,學(xué)習(xí)很細心。varchar是字符串類型,time_cost__gte='30'相當于字符串與字符串比較,不是數(shù)字大小的比較。python中字符串大小比較的問題,google一下。
解決辦法:把time_cost字段類型改成int類,也就是ORM中用IntergerField,然后time_cost__gte=30,引號就不要了,數(shù)字與數(shù)字比較。