Django-GraphQL (1)

강재구·2022년 3월 28일
0

Django GraphQL

목록 보기
1/1

Django Graphene

1. 순서 및 개념

1-1. Model 생성

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)

1-2. Type 생성

GraphQL에서 Type 은 여러 필드 를 포함할 수 있는 객체입니다 . 각 필드는 값을 반환하는 resolvers 를 통해 계산됩니다. 유형(Type) 모음을 스키마 라고 합니다 . 모든 스키마에는 서버에서 데이터를 가져오기 위한 쿼리(Query) 와 서버 로 데이터를 보내기 위한 변형(Mutation) 이라는 특수한 유형이 있습니다.

1-3. Query ( Read ) 생성

Query는 CRUD 부분중에 Read 역할을 담당하고 있다.

  • filter
  • ordering
    구현
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

1-4. Mutation ( Create, Update, Delete ) 생성

Mutation은 Server로 데이터를 보내는 것으로 CRUD중에 read를 제외한 기능을 담당한다.

  1. Schema 와 결합하기
profile
Python Backend Developer @Fitpet

0개의 댓글