如何为 Strawberry GQL 实现 Django 模型的持续时间标量?

问题描述 投票:0回答:1

如何在 Strawberry GraphQL API 中公开 Django 持续时间模型字段? ISO8601 持续时间格式是否有标准实现,或者是否需要实现自定义标量字段?

from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=255)
    my_duration = models.DurationField()
python strawberry-graphql
1个回答
0
投票

经过一番搜索并没有找到任何东西,这里是一个实现(供我将来参考和繁荣)。使用 pypi 中的

isodate
包。

import isodate
from typing import NewType
from datetime import timedelta
import strawberry
import strawberry_django

from my_app.models import MyModel

Duration = strawberry.scalar(
    NewType("Duration", timedelta),
    serialize=lambda v: isodate.duration_isoformat(v),
    parse_value=lambda v: isodate.parse_duration(v),
)

@strawberry_django.type(MyModel)
class MyModelGQLNode:
    name: strawberry.auto
    my_duration: Duration

© www.soinside.com 2019 - 2024. All rights reserved.