Django REST 框架——如何将外键解析为实际值,而不是索引?

Ric*_*opo 4 python django rest django-rest-framework

我有一个模型,例如:

class Job(models.Model):
    build = models.ForeignKey(Build, on_delete=models.PROTECT)
    name = models.CharField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

和一个观点

class JobViewSet(viewsets.ModelViewSet):
    queryset = Job.objects.all()
    serializer_class = JobSerializer
Run Code Online (Sandbox Code Playgroud)

和一个序列化器

class JobSerializer(serializers.ModelSerializer):
    class Meta:
        model = Job
Run Code Online (Sandbox Code Playgroud)

唯一的问题是当我访问 API 端点时,我收到数据,但模型的build属性Job是外键的实际整数。我想要该键的实际值(这也是我的 Django rest 框架中的一个模型。

我进行了很多搜索,发现了一些很有前途的文章,但是当我尝试各种方法时并没有得到正确的结果。我还是 Django 的新手……你们中的任何人都可以帮忙吗?

Anu*_*dra 5

首先为Build类似创建一个序列化程序:

class BuildSerializer(serializers.ModelSerializer):
    class Meta:
        model = Build
Run Code Online (Sandbox Code Playgroud)

接下来JobSerializer做:

class JobSerializer(serializers.ModelSerializer):
    build = BuildSerializer()
    class Meta:
        model = Job
        fields = ('name','build')
Run Code Online (Sandbox Code Playgroud)