GraphQL Money types for Django using graphene and django-money (djmoney).
Project description
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file graphene_djmoney-0.2.2.tar.gz
.
File metadata
- Download URL: graphene_djmoney-0.2.2.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.1 CPython/3.10.6 Linux/5.15.0-1024-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f3f60070dd519a30e2d6e5325454bb62f2a55dc432c58694419bbeb1c6849b0 |
|
MD5 | b7fe8d373927da2dea2a9ee0a803b5f6 |
|
BLAKE2b-256 | bac8e73d757e8d4da3081aa10f98dfcf6f81ce49062f5f85ea59f31342ec6a83 |
File details
Details for the file graphene_djmoney-0.2.2-py3-none-any.whl
.
File metadata
- Download URL: graphene_djmoney-0.2.2-py3-none-any.whl
- Upload date:
- Size: 4.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.1 CPython/3.10.6 Linux/5.15.0-1024-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f2c1eb11e21401240d0008b4e1108026aad5a8616999b8e560705e46c24d79bc |
|
MD5 | 0cbb90831dc8500e7480ebc729db436b |
|
BLAKE2b-256 | 620874b28311aa4fa34adf5230b19b9be7c946dcacf338ab055e00d6978a1966 |