graphql-python / graphene-django

Build powerful, efficient, and flexible GraphQL APIs with seamless Django integration.

Home Page:http://docs.graphene-python.org/projects/django/en/latest/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support Django 5 GeneratedField

KianChavoshiNejad opened this issue · comments

Note: for support questions, please use stackoverflow. This repository's issues are reserved for feature requests and bug reports.

  • What is the current behavior?

I used Django 5's GenerativeField to define one of my fields

quantity = models.PositiveIntegerField()

unit_price = models.DecimalField(
        max_digits=12,
        decimal_places=2,
        null=True,
        blank=True,
    )

total_price = models.GeneratedField(
        expression=models.F("quantity") * models.F("unit_price"),
        output_field=models.DecimalField(
            max_digits=12,
            decimal_places=2,
        ),
        db_persist=True,
        null=True,
        blank=True,
    )

When I try to pass the value through the DjangoObjectType, I received the following error:

Exception: Don't know how to convert the Django field ModelName.total_price (<class 'django.db.models.fields.generated.GeneratedField'>)

  1. Create a model with a GeneratedField
  2. Create a DjangoObjectType for the model created in step 1
  3. Error will appear when trying to query the generated field in GraphQL
  • What is the expected behavior?
    The expected behavior is for DjangoObjectType to use the output_field type defined in the GeneratedField.

  • What is the motivation / use case for changing the behavior?
    We would like to leverage the new GeneratedField functionality in Django 5.

  • Please tell us about your environment:

    • Version: 14,2,1
    • Platform: macOS Sonoma
    • Django_version = 5.0.1
      -Graphene_version = 3.3
  • Other information (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow)