cb
, 66.45라는 GET 매개 변수를 구문 분석하여 float로 변환하여 66.45를 얻었습니다.django가 잘못된 자릿수를 사용하여 데이터를 쿼리합니다.
cb = request.GET.get("cb", '')
if re.match('^\d+(\.\d+)?$', cb):
cb=float(cb)
params['cb'] = cb
그리고 나는, DB의 데이터를 쿼리하는 데 사용되는 빈 얻었다. 디버깅, 쿼리 SQL 대신 66.45
의 66.4500000000000028421709430404007434844970703125
을 사용하는 경우
products = Product.objects.filter(**params)
는 사실, 나는 발견하고 나의 빈 쿼리 결과를 일으켰습니다. 아무 잘못이
cb = models.DecimalField(max_digits=6, decimal_places=2, default=0)
있습니까 :
cb
은 아래 제품 모델에 정의? 나는 혼란 스럽다.
부표는 정확한 유형이 아닙니다. 따라서 쿼리를 실행하기 전에 cb를 66.45로 줄이십시오. – Guinner
타입 변환을하지 않고'cb'를 사용하여 시도해 보셨습니까? 즉, 문자열로 사용 하시겠습니까? –
cb가 문자열로 사용될 때 mysql이이를 지원하기 때문에 작동합니다. 나는 파이썬 해석기에서 float로 cb를 캐스팅하려했는데 같은 결과를 얻었다. 왜 django 쿼리에서 사용될 때 정확하지 않게됩니까? 숫자를 던지면 너무 위험한가요? – Uphie