2016-10-06 5 views
1

У меня есть следующие моделиПолучить данные иностранных ключевых отношений в Serializer Джанго: Rest Framework

class Task(models.Model): 
    task_name = models.CharField(max_length=255) 
    task_description = models.TextField(blank=True, null=True) 
    project_id = models.ForeignKey('Project') 



class Project(models.Model): 
    project_name = models.CharField(max_length=255) 
    project_description = models.CharField(max_length=255) 

Я пишу сериалайзер для задачи

class TaskSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Task 
     fields = (
      'id', 
      'task_name', 
      'task_description', 
      'project_id', 
       ) 

Но я хочу, название проекта, а также в TaskSerializer, к которому можно получить доступ, используя project_id. Как мне это достичь?

ответ

1

Укажите сериализатор для поля project_id, например, у вас может быть ProjectSerializer, который представляет собой очень простой сериал. Используйте это как так:

class ProjectSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Project 
     fields = ('project_name',) 

class TaskSerializer(serializers.ModelSerializer): 
    project_id = ProjectSerializer() 

    class Meta: 
     model = Task 
     fields = (
      'id', 
      'task_name', 
      'task_description', 
      'project_id') 

Также может worht отметить: при именовании ForeignKey отношения его вообще хорошая практика, чтобы просто пойти с realted названием модели, а не что-то другое. project_id будет в этом случае просто стать project. source: Working with models in django

+0

Это дает мне имя проекта, не определенное для ошибки объекта Task. Я хочу как ID, так и имя в ответе! –

+0

В этом случае вы получите вложенный ответ. Т.е. вам придется получить доступ к имени через task.project_id.project_name. Чтобы добавить идентификатор проекта в ответ, просто измените projecterializer –

Смежные вопросы