В Django 3.0.2 Я определил модель, подобную следующей, в <django-app>/model.py
:
from django.db import models
from django.utils.translation import gettext_lazy as _
class Something(models.Model):
class UnitPrefix(models.TextChoices):
MILLI = 'MILLI', _('Milli')
MICRO = 'MICRO', _('Micro')
NANO = 'NANO', _('Nano')
class UnitSi(models.TextChoices):
VOLUME = 'CM', _('Cubicmetre')
METRE = 'M', _('Metre')
unit_prefix = models.CharField(
max_length=5,
choices=UnitPrefix.choices,
default=UnitPrefix.MICRO,
)
unit_si = models.CharField(
max_length=2,
choices=UnitSi.choices,
default=UnitSi.M,
)
Я использую graphene- django для реализации API-интерфейса GraphQL. API предоставляет модель через <django-app>/schema.py
:
from graphene_django import DjangoObjectType
from .models import Something
class SomethingType(DjangoObjectType):
class Meta:
model = Something
class Query(object):
"""This object is combined with other app specific schemas in the Django project schema.py"""
somethings = graphene.List(SomethingType)
...
В результате я могу успешно запрашивать через GraphQL:
{
somethings {
unitPrefix
unitSi
}
}
Однако я бы хотел определить тип GraphQL
type Something {
unit: Unit
}
type Unit {
prefix: Unit
si: Si
}
enum UnitPrefix {
MILLI
MICRO
NANO
}
enum UnitSi {
CUBICMETRE
LITRE
}
, которые я могу запросить с помощью
{
somethings {
unitPrefix
unitSi
}
}
Как реализовать эту пользовательскую модель для сопоставления типов?