问题描述
在 graphiql 上尝试 Mutation 时出现错误:
Direct assignment to the forward side of a many-to-many set is prohibited. Use category.set() instead.
如何设置,我应该在基于 InputObjectType 的 QuestionInput 类中的 types.py 中为 category =
写什么?
我的文件如下:
models.py
from django.contrib.postgres.fields import ArrayField
from django.db import models
from ..common.models import CommonFields
from ..kategoriler.models import Kategori
class Question(CommonFields):
question = models.TextField()
answer = ArrayField(models.TextField())
rightAnswer = models.TextField()
category = models.ManyToManyField("Kategori")
DIFFICULTY_CHOICES = (
('Easy','easy'),('Medium','medium'),('Hard','hard'),('Very Hard','very hard'),)
difficulty = models.CharField(max_length=10,choices=DIFFICULTY_CHOICES,default="medium")
def __str__(self):
created_at = self.created_at.strftime("%b %d %Y %H:%M:%s")
return f"Q : {self.question[:7]},Created at : {created_at}"
types.py
import graphene
from graphene import relay,ObjectType,InputObjectType
from graphene_django import DjangoObjectType
from ..models import Question
class QuestionNode(DjangoObjectType):
class Meta:
model = Question
filter_fields = []
interfaces = (relay.Node,)
class QuestionInput(InputObjectType):
question = graphene.String(required=True)
answer = graphene.String(required=True)
rightAnswer = graphene.String(required=True)
category = graphene.?????????
difficulty = graphene.String(required=True)
create_question.py
import graphene
from graphene import relay
from ...models import Question
from ..types import QuestionNode,QuestionInput
class CreateQuestion(relay.ClientIDMutation):
class Input:
question_inputs = graphene.Field(QuestionInput)
question = graphene.Field(QuestionNode)
@classmethod
def mutate_and_get_payload(cls,root,info,**input):
question = Question.objects.create(**input.get("question_inputs"))
question.save()
return CreateQuestion(question=question)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)