【发布时间】:2017-12-27 20:47:51
【问题描述】:
我正在构建我的第一个 GraphQL 突变。最初我使用我找到的示例代码构建它。但现在我正在重构它以使其结构更好。虽然代码似乎运行良好,但由于我对 Django 比较陌生,我不确定我使用的方法是否是 Django/Python 的最佳实践。
这是我的相关代码:
#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 工作流模型的方式有关。这是正确的做法吗?
罗伯特
【问题讨论】: