class ProductKyle(BaseDateTimeField, models.Model):
name = models.CharField()
quantity = models.PositiveIntegerField(default=0)
is_default = models.BooleanField(default=False)
price = models.DecimalField(verbose_name='가격', max_digits=2, decimal_places=3)
GraphQL에서 Type 은 여러 필드 를 포함할 수 있는 객체입니다 . 각 필드는 값을 반환하는 resolvers 를 통해 계산됩니다. 유형(Type) 모음을 스키마 라고 합니다 . 모든 스키마에는 서버에서 데이터를 가져오기 위한 쿼리(Query) 와 서버 로 데이터를 보내기 위한 변형(Mutation) 이라는 특수한 유형이 있습니다.
Query는 CRUD 부분중에 Read 역할을 담당하고 있다.
구현
class TutorialQueries(graphene.ObjectType):
"""
- resolver 필요
graphene.List()
graphene.Field()
- 자동생성
DjangoConnectionField()
relay.Node()
"""
product_kyles = graphene.List(ProductKyleType)
# product_kyles = FitpetDjangoConnectionField(ProductKyleType)
# Field 사용시 추가 원하는 인자를 받을 수 있다. resolver 필요
product_kyle = graphene.Field(ProductKyleType, name=graphene.String(required=True), description='해당 쿼리 설명')
# resolver 를 따로 안만들어줘도 된다.
# product_kyle = relay.Node.Field(ProductKyleType) # ID 를 필수로 받으라고 변함
def resolve_product_kyles(root, info):
"""실제로 실행되는 공간"""
return ProductKyle.objects.all()
def resolve_product_kyle(root, info, name):
try:
return ProductKyle.objects.get(name=name)
except ProductKyle.DoesNotExist:
return None
Mutation은 Server로 데이터를 보내는 것으로 CRUD중에 read를 제외한 기능을 담당한다.