表中某字段比如time_cost类型为varchar,filter查询时筛选time_cost__gte='30'会导致结果不准,很多实际time_cost小于30的也被放入结果中,是和varchar和float转化有关系吗 怎么规避这种问题呢
不错,学习很细心。varchar是字符串类型,time_cost__gte='30'相当于字符串与字符串比较,不是数字大小的比较。python中字符串大小比较的问题,google一下。
解决办法:把time_cost字段类型改成int类,也就是ORM中用IntergerField,然后time_cost__gte=30,引号就不要了,数字与数字比较。