2016-10-11 76 views
0

我有一個模型項目,任務和項目有很多任務,我試圖列出每個項目下的所有任務。無法在Django rest框架中顯示外鍵關係

GET /api/project/ 

HTTP 200 OK 
Allow: GET, POST, HEAD, OPTIONS 
Content-Type: application/json 
Vary: Accept 

[ 
    { 
     "id": 2, 
     "name": "Project 2", 
     "task": [ 
      3 
     ] 
    }, 
    { 
     "id": 1, 
     "name": "Project 1", 
     "task": [ 
      4, 
      2, 
      1 
     ] 
    } 
] 

我無法顯示每一個任務,任務名稱的細節,描述,狀態..等

這裏是我的串行

from rest_framework.serializers import ModelSerializer 
from api.models import Project, Task 


class ProjectSerializer(ModelSerializer): 
    class Meta: 
     model = Project 
     fields = (
      'id', 
      'name', 
      'task' 
      ) 


class TaskSerializer(ModelSerializer): 

    class Meta: 
     model = Task 

這裏是我的模型

class Project(models.Model): 

    # Fields 
    user = models.ForeignKey(User) 
    name = models.CharField(max_length=255) 

    # Relationship Fields 
    #user = models.ForeignKey(settings.AUTH_USER_MODEL,) 
    user = models.ForeignKey(User) 

    class Meta: 
     ordering = ('-created',) 

    def __unicode__(self): 
     return u'%s' % self.name 


class Task(models.Model): 

    # Fields 
    name = models.CharField(max_length=255) 

    # Relationship Fields 
    project = models.ForeignKey('Project', related_name='task') 

    class Meta: 
     ordering = ('-created',) 

    def __unicode__(self): 
     return u'%s' % self.name 

回答

1

瞭解更多關於嵌套串行器http://www.django-rest-framework.org/api-guide/serializers/#dealing-with-nested-objects。您需要將TaskSerilizer加入您的ProjectSerializer

from rest_framework.serializers import ModelSerializer 
from api.models import Project, Task 

class TaskSerializer(ModelSerializer): 
    class Meta: 
     model = Task 

class ProjectSerializer(ModelSerializer): 
    task = TaskSerializer(many=True) 

    class Meta: 
     model = Project 
     fields = (
      'id', 
      'name', 
      'task' 
     )