我觉得应该在某处记录,但我找不到它。我可以通过突变向我的数据库添加数据,但我无法改变它。
Graphene与Django合作,我的db是SQLite
它非常具体,我希望有人知道答案。我尝试过的其他事情:
mutation AppMutation(
$input: AddSchoolNodeInput!
) {
addSchool(input: $input) {
school {
id
name
description
}
}
}
其中AddSchoolNodeInput!
是("U2Nob29sTm9kZToxMQ=="
是现有ID):
{
"name": "edit kaas",
"description": "edit fails",
"clientMutationId":"U2Nob29sTm9kZToxMQ=="
}
它创建一个新项目并返回:
{
"data": {
"addSchool": {
"school": {
"id": "U2Nob29sTm9kZToxNA==",
"name": "edit kaas",
"description": "edit fails"
}
}
}
}
答案 0 :(得分:0)
我能够通过为上述变异提供ID并在模式中执行此操作来编辑现有学校:
class AddSchool(relay.ClientIDMutation):
class Input:
name = String()
description = String()
id = String()
school = Field(SchoolNode)
@classmethod
def mutate_and_get_payload(cls, input, context, info):
name = input.get("name")
description = input.get("description")
id = input.get("id")
if id:
id = from_global_id(id)[1]
school = School.objects.get(id=id)
if name:
school.name = name
if description:
school.description = description
else:
school = School(
name=name,
description=description
)
school.save()
return AddSchool(school=school)
它抓取ID,将其放入if语句,将其从石墨烯ID传输到带有from_global_id
的django ID,然后从db中获取它。如果它能找到它会发生错误,所以只有在没有提供id的情况下才会创建新的学校。
不确定它是否是最佳做法但是有效。