我正在使用graphene-django
构建我的API。我有一个名为StoreType
的DjangoObjectType,它代表模型商店。该模型具有一个名为opening_days
的MultiSelectField,它指示商店在一周中的哪几天营业。要创建新商店,我使用以下突变:
class Weekdays(graphene.Enum):
MO = "Mo"
TU = "Tu"
WE = "We"
TH = "Th"
FR = "Fr"
SA = "Sa"
SU = "Su"
class CreateStore(graphene.Mutation):
store = graphene.Field(StoreType)
class Arguments:
opening_days = graphene.Argument(graphene.List(Weekdays))
def mutate(self, info, opening_days):
store = Store(opening_days=opening_days)
store.save()
return CreateStore(store=store)
该突变完美地起作用。但是然后,当我尝试查询商店时,我得到了错误"Expected a value of type \"StoreOpeningDays\" but received: Monday, Tuesday",
,这确实是有道理的,因为此字段将数据保存为单个字符串,且值之间用逗号分隔。问题是石墨烯期望graphene.List(Weekdays)
中指定的列表无法检索。
关于如何解决此问题的任何想法?预先感谢!
答案 0 :(得分:-1)
你有一行写着:
return CreateStore(store=store)
= 两边的 store 变量的小写使我相信出站或入站信息指向自身。
虽然不熟悉graphene-django
...
检查 store 变量的范围。如果左侧旨在引用来自 CreateStore 函数的参数名称,则尝试重命名右侧以确保它们不冲突。
CreateStore 参数是否需要以特殊字符作为前缀,以便程序知道它直接引用了 CreateStore 函数中定义的参数名称?就像 C# 中的 SQL 命令参数一样:
cmd.Parameters.AddWithValue("@myparmname", mylocalval);