如何解决石墨烯 django m2m 与通过表
我是编程新手,我自己开始玩和学习 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 举报,一经查实,本站将立刻删除。