Как использовать Django Graphene ModelForm Mutation
Я пытаюсь заставить эту мутацию создать новую запись в базе данных. Он возвращает код 200, но без изменений в базе данных, а также возвращает null. В документации нет ясности по этому вопросу.(ModelForm vs функция mutate)
Ответ Graphql:
{
"data": {
"addSubjectMark": {
"subjectMark": null,
"errors": []
}
}
}
Согласно документации django-graphene, я использую DjangoModelForm для обработки ввода в базу данных.
Мой 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 ответ
В 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()