问题描述
我是编程新手,我自己开始玩和学习 graphene-django。现在,我不确定目前是否有可能拥有这样的东西:
query {
allTeams {
name,members {
user {
firstName,lastName
},role,label
}
}
}
结果在哪里:
{
"data": {
"allTeams": [
{
"name": ...,"members": [
{
"user": {
"firstName": ...,"lastName": ...
},"role": ...,"label": ...
},...
]
},...
]
}
}
我的模型目前看起来像这样:
class Team(models.Model):
name = models.CharField(max_length=255,blank=False,null=False)
members = models.ManyToManyField('account.User',through='TeamMembers',related_name='teams',related_query_name='team')
class TeamMembers(models.Model):
team = models.ForeignKey(Team,on_delete=models.CASCADE)
user = models.ForeignKey('account.User',models.SET_NULL,null=True)
role = models.CharField(max_length=6)
label = models.CharField(max_length=2,blank=True,null=True)
class Meta:
unique_together = [['team','user']]
我的 User
模型只是一个位于 AbstractUser
的 account.models
,我的架构如下:
class UserType(DjangoObjectType):
class Meta:
model = User
fields = ['first_name','last_name']
class TeamMemberType(DjangoObjectType):
class Meta:
model = TeamMembers
fields = ['user','role','label']
user = graphene.List(UserType)
role = graphene.String()
label = graphene.String()
def resolve_user(self,info):
return self.user
def resolve_role(self,info):
return self.role
def resolve_label(self,info):
return self.label
class TeamType(DjangoObjectType):
class Meta:
model = Team
fields = ['name','members']
members = graphene.List('schemas.team_schema.TeamMemberType')
def resolve_members(self,info):
return self.members.all()
{
"errors": [
{
"message": "Expected value of type \"TeamMemberType\" but got: User.","locations": [
{
"line": ..,"column": ..
}
]
},...
],"data": {
"allTeams": [
{
"name": ...,"members": [
null,null,null
]
},...
]
}
}
我曾尝试到处寻找解决方案,但没有找到。我已经阅读了 graphene-django
和 graphene-python
的文档,但没有找到关于带有直通表的 m2m 字段的示例或文档。非常感谢任何帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)