在Serializer Django:Rest Framework中获取外键关系的数据

时间:2016-10-06 12:54:46

标签: django django-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 个答案:

答案 0 :(得分:0)

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')

同样可能需要注意的是:在命名foreignkey关系时,一般来说这是一个很好的做法,只需要使用已实现的模型名称而不是其他不同的名称。在这种情况下,project_id会成为projectsource: Working with models in django