graphene-djmoney
Introduction
GraphQL Money types for Django using graphene and django-money (djmoney). If you use django, graphene_django, and django-money, this library is for you.
Supported on:
- Python 3.7+ (likely earlier versions too, needs tested)
- Django 2+
- graphene-django 2+
- django-money 1+
Here's how it works. Automagically get this query:
query Products {
products {
id
cost {
...moneyFragment
}
}
}
fragment moneyFragment on Money {
asString # "123.45 USD"
amount # 123.45
amountStr # "123.45"
currency {
code # "USD"
name # "US Dollar"
# These are not as commonly used, see tests:
numeric
symbol
prefix
}
}
With this code:
# yourapp/models.py
from django.conf import settings
from django.contrib.auth.models import AbstractUser
from django.db import models
from djmoney.models.fields import MoneyField
class User(AbstractUser):
pass
class Product(models.Model):
creator = models.ForeignKey(User, related_name="products", on_delete=models.CASCADE)
title = models.CharField(max_length=2000)
cost = MoneyField(
max_digits=settings.CURRENCY_MAX_DIGITS,
decimal_places=settings.CURRENCY_DECIMAL_PLACES,
default_currency=settings.BASE_CURRENCY,
null=True,
blank=True,
)
# yourapp/schema/types.py
import graphene
from graphene_django import DjangoObjectType
from yourapp import models
class Product(DjangoObjectType):
class Meta:
model = models.Product
interfaces = (graphene.relay.Node,)
fields = ("id", "cost")
# yourapp/schema/__init__.py
import graphene
from .. import models
from .types import Product
class Queries(graphene.ObjectType):
products = graphene.List(graphene.NonNull(types.Product), required=True)
def resolve_products(self, info, **kwargs):
return models.Product.objects.all()
schema = graphene.Schema(query=Queries, types=[Product])
# yourapp/settings.py
INSTALLED_APPS += [
"graphene_djmoney",
]
GRAPHENE = {
"SCHEMA": "yourapp.schema.schema",
}
Installation
pip install graphene-djmoney
Changelog
0.2.0
- #5, #6, #7 Upgrade to py-moneyed 2.0, add babel format support (new field, `formatted`)
- **Breaking change**: removes `suffix` from schema, since babel doesn't support out of the box.
0.1.3
Initial release, sort of.
Contributing
Running tests:
poetry run pytest
Still TODO. For now, please open a pull request or issue.
Metadata
Release files for graphene-djmoney 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| graphene_djmoney-0.2.3.tar.gz | 5.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| graphene_djmoney-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.9 kB
Release files / graphene_djmoney-0.2.3.tar.gz
| Download URL | graphene_djmoney-0.2.3.tar.gz |
|---|---|
| Size | 5.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
113dd17e878d518fc488a14652f2fb045a4f2e84d8d3739a4809fcc3852404ed
|
|
BLAKE2b-256 checksum How to use checksums |
770446abc9ab1d4a21c4c6e7f89267ad7aecad787107e17b0bb9d506c3b8619e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.3.1 CPython/3.10.6 Linux/5.15.0-1024-azure
|
Release files / graphene_djmoney-0.2.3-py3-none-any.whl
| Download URL | graphene_djmoney-0.2.3-py3-none-any.whl |
|---|---|
| Size | 5.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bad2b75e3ba420f8d2543f030509bc8aff18052823ba15fcfb6796efd777878b
|
|
BLAKE2b-256 checksum How to use checksums |
2489c77b6495474b94555c09272562734933729cc7cf8ca6de697bb1c998c149
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.3.1 CPython/3.10.6 Linux/5.15.0-1024-azure
|