Как получить Django мутацию формы графена для применения - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь заставить эту мутацию создать новую запись в базе данных. Он возвращает код 200, но без изменений в базе данных, а также возвращает null. В документации нет ясности по этому вопросу. (ModelForm vs функция mutate)

Ответ Graphql:

{
  "data": {
    "addSubjectMark": {
      "subjectMark": null,
      "errors": []
    }
  }
}

Согласно документации django -graphene, я использую DjangoModelForm для обработки ввод в базу данных.

My schema.py:

class SubjectMarkType(DjangoObjectType):
    id = graphene.ID(required=True)
    class Meta:
        model = SubjectMark

class AddSubjectMarkMutation(DjangoModelFormMutation):
    subject_mark = graphene.Field(SubjectMarkType)
    class Meta:
        form_class = ReportForm

class Mutation(graphene.ObjectType):
    add_subject_mark = AddSubjectMarkMutation.Field()
  1. Нужно ли мне добавлять в форму метод сохранения?
  2. Нужно ли мне использовать функцию изменения? (Документы неясны)

Спасибо!

1 Ответ

0 голосов
/ 19 июня 2020

ReportForm должен работать по умолчанию с Django, никаких изменений не требуется. Отсутствующий элемент разрешает атрибут subject_mark в классе AddSubjectMarkMutation.

class SubjectMarkType(DjangoObjectType):
    id = graphene.ID(required=True)

    class Meta:
        model = SubjectMark


class AddSubjectMarkMutation(DjangoModelFormMutation):
    subject_mark = graphene.Field(SubjectMarkType)

    class Meta:
        form_class = ReportForm  # NB. make sure ReportForm is able to save in Django

    # you need to resolve subject_mark to return the new object
    def resolve_subject_mark(self, info, **kwargs):
        return self.subjectMark


class Mutation(graphene.ObjectType):
    add_subject_mark = AddSubjectMarkMutation.Field()
...