0
我正在构建我的第一个GraphQL变种。最初我使用我找到的示例代码构建它。但是现在我正在重构它的结构。虽然代码似乎工作正常,因为我相对较新的Django,我不确定我使用的方法是Django/Python的最佳做法。将方法添加到Django模型中
这里是我的相关代码:
#models.py
class Workflow(models.Model):
name = models.CharField(max_length=30)
description = models.TextField(blank=True, null=True)
def __str__(self):
return "{}".format(self.name)
@classmethod
def create(cls, name, description):
new_workflow = cls(
name = name,
description = description
)
new_workflow.save()
return new_workflow
# mutations.py
class Workflow(DjangoObjectType):
class Meta:
model = WorkflowModel
interfaces = (relay.Node,)
@classmethod
def get_node(cls, id, context, info):
node = get_workflow(id)
return node
class CreateWorkflow(relay.ClientIDMutation):
class Input:
name = graphene.String()
description = graphene.String()
workflow = graphene.Field(Workflow)
success = graphene.Boolean()
errors = graphene.String()
@classmethod
def mutate_and_get_payload(cls, input, context, info):
name = input.get('name')
description = input.get('description')
try:
workflow = WorkflowModel.create(name, description)
return CreateWorkflow(workflow=workflow, success=True)
except Exception as e:
success = False
return CreateWorkflow(workflow=None, success=False, errors=str(e))
class Mutation(graphene.AbstractType):
create_workflow = CreateWorkflow.Field()
我的主要问题与我公司推出def create
到Django的工作流模型的方式去做。这是做到这一点的正确方法吗?
罗伯特