繁体   English   中英

从多对多关系中获取数据

[英]Get data from ManytoMany Relationship

我有以下型号:

class Speaker(models.Model):
    id_speaker = models.UUIDField(primary_key=True)
    name = models.TextField()

class Session(models.Model):
    id_session = models.UUIDField(primary_key=True)
    name = models.TextField()
    speakers = models.ManyToManyField(Speaker)

当查询Session.objects.all() ,我得到了下一个示例数据:

{
  "id_session": "UUID",
  "name": "Example name",
  "speakers": [
    {
      "id_speaker": "UUID",
      "name": "John Doe"
    }
  ]
}

如您所见,我有会议发言人列表,现在的问题是,如何获得发言人会议,这是我想要的一个示例:

{
    "id_speaker": "UUID",
    "name": "John Doe",
    "sessions": [
        {
            "id_session": "UUID",
            "name": "Example name"
        }
    ]
}

如果您想知道我是否使用django-rest-framework,答案为是。

can您不能更改模型的结构吗?

class Session(models.Model):
    id_session = models.UUIDField(primary_key=True)
    name = models.TextField()


class Speaker(models.Model):
    id_speaker = models.UUIDField(primary_key=True)
    name = models.TextField()
    session = models.ManyToManyField(Session)

不知道我是否正确理解您的问题。

尝试related_name Django相关名称

注意related_name在ManyToManyField kwarg

class Speaker(models.Model):
    id_speaker = models.UUIDField(primary_key=True)
    name = models.TextField()

class Session(models.Model):
    id_session = models.UUIDField(primary_key=True)
    name = models.TextField()
    speakers = models.ManyToManyField(Speaker, related_name='sessions')

然后,您可以从发言人对象获得所有会话

some_speaker.sessions.all()  #Returns sessions

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM