python - 如何实现 django 模型到 graphene-django 类型的自定义映射?
问题描述
在 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 来实现 GraphQL API。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
}
}
如何实现此自定义模型到类型映射?
解决方案
推荐阅读
- php - 试图获取非对象 yii2 的属性“id”
- flutter - 如何使用传递的参数制作 listview.builder
- caching - AWS Cloudfront avoid caching particular querystring
- .net - 在 Windows 10 上的 Docker 容器内运行 .NET exe
- javascript - Trustpilot 身份验证错误未知 grant_type
- yaml - yq v4:打印具有完整键路径的所有键值对
- c - Wayland 客户端获取合成器名称
- autocomplete - Autocomplete vuetify:选择输入时隐藏选择?
- r - 如何在 R 中的两个不同 y 轴上的一张图中绘制根生长率与枝条生长率的关系
- firebase - 在 Firebase 9.0.0 上取消订阅的正确方法