我有以下型号
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进行访问。我如何实现这一目标?
答案 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
会成为project
。 source: Working with models in django