微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

石墨烯 django m2m 与通过表

如何解决石墨烯 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 模型只是一个位于 AbstractUseraccount.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-djangographene-python 的文档,但没有找到关于带有直通表的 m2m 字段的示例或文档。非常感谢任何帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。