2017-04-06 37 views
0

我有以下型号:从多对多的关系获取数据

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,答案是YES。

回答

0

尝试related_nameDjango Related Name

通知的related_name kwarg在ManyToManyField

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 
+0

谢谢你,你是对的,但为了完成答案,我不得不在串行器类中添加字段'会话'。 –

0

呃不能改变模型的结构吗?

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) 

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