-
Notifications
You must be signed in to change notification settings - Fork 769
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Convert DecimalField to String rather than Float #91
Comments
As a workaround for this particular problem, I created a Decimal type, and then am explicitly setting that field in the DjangoObjectType class. For example, I created a Decimal type like this
and then explicitly replace the field like this:
assuming that I have a Django model MyModel with Decimal field my_decimal_field. |
Decimal type landed in graphene: graphql-python/graphene#703 Edit: Appears it isn't released yet but is merged, need graphene>2.1.3 |
Yeah, I finally got around to adding my Decimal type into graphene. It should be possible to fix graphene-django's implementation of DecimalField after the next release of graphene to actually use a Decimal, and it won't be necessary to convert to a String (as per the title of this issue). Note that the JSON output is implemented as string though. |
Brilliant, thank you @picturedots! |
@gsvr I didn't make the graphene-django change that you noted in form_converter.py above, so not sure if this is issue should be closed. Without that change, it looks like Decimals are still explicitly converted to floats. |
Waiting on this feature as well. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Thanks @ulgens |
Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward? This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
Thanks to everyone who contributed to resolving this! 👏 👏 |
Has this been documented in the changelog? It broke our existing app logic because now suddenly we started getting strings rather than floats. Is there a way to default to previous behavior? |
Huge +1 for adding a configuration setting for changing the default behavior here; it looks like this change happened in a minor release? It should have been a major release as it's a breaking change (it broke our codebase as well). |
@beaugunderson I ended up forking the repo then modifying it with this commit
|
This approach is very helpful. |
DecimalField entries are currently being converted to Float (
graphene-django/graphene_django/form_converter.py
Lines 56 to 59 in 8f5a425
Full support for Decimal would be great, but in the meantime I propose that DecimalField should be converted to String instead. Once you've converted a Decimal to a Float, you've probably lost the benefit of why you used Decimal in the first place, since you'll now have values like
3.14000000000000012
, rather than3.14
. If it is converted to String, it is simple enough for the user to convert that String back to Decimal, whereas converting from Float to Decimal is not straightforward.The text was updated successfully, but these errors were encountered: