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

时间:2015-11-10 03:02:26

标签: 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)

视图

class JobViewSet(viewsets.ModelViewSet):
    queryset = Job.objects.all()
    serializer_class = JobSerializer

序列化程序

class JobSerializer(serializers.ModelSerializer):
    class Meta:
        model = Job

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

我搜索了很多,我找到了一些很有前途的文章,但是当我尝试各种各样的东西时却得不到正确的结果。我还是Django的新手...你们有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

首先为Build创建一个序列化程序,如:

class BuildSerializer(serializers.ModelSerializer):
    class Meta:
        model = Build

JobSerializer中的下一步做:

class JobSerializer(serializers.ModelSerializer):
    build = BuildSerializer()
    class Meta:
        model = Job
        fields = ('name','build')

答案 1 :(得分:0)

使用depth属性。

class BuildSerializer(serializers.ModelSerializer):
    class Meta:
        model = Build
        depth = 1