Skip to main content

graphene-djmoney

python package

Build Status PyPI version

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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

graphene_djmoney-0.2.3.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

graphene_djmoney-0.2.3-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file graphene_djmoney-0.2.3.tar.gz.

File metadata

  • Download URL: graphene_djmoney-0.2.3.tar.gz
  • Upload date:
  • Size: 5.4 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

Hashes for graphene_djmoney-0.2.3.tar.gz
Algorithm Hash digest
SHA256 113dd17e878d518fc488a14652f2fb045a4f2e84d8d3739a4809fcc3852404ed
MD5 ce5530f92b7f9f92b4a2d85e5df3209c
BLAKE2b-256 770446abc9ab1d4a21c4c6e7f89267ad7aecad787107e17b0bb9d506c3b8619e

See more details on using hashes here.

File details

Details for the file graphene_djmoney-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: graphene_djmoney-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 5.5 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

Hashes for graphene_djmoney-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bad2b75e3ba420f8d2543f030509bc8aff18052823ba15fcfb6796efd777878b
MD5 f9146a766da1cd5b64a9475dd03aee88
BLAKE2b-256 2489c77b6495474b94555c09272562734933729cc7cf8ca6de697bb1c998c149

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page