Django-rest:显示非主键字段

时间:2014-09-13 00:05:54

标签: django django-rest-framework

可能这是重复的,但我似乎找不到任何东西,因为没有有用的关键字。

制造商是汽车的外键:

class manufacturer(models.Models):
    id = models.AutoField(primary_key=True)
    name = models.CharField(unique=True, max_length=64)

class cars(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(unique=True, max_length=64)
    manufacturer = models.ForeignKey('Manufacturer')

现在,我有一个汽车api序列化到它包含的所有字段(id,名称,制造商)。但是,“manufacturer”字段显示Manufacturer类的ID。

问题:如何在汽车API中显示制造商的名称,而不是制造商的ID?

1 个答案:

答案 0 :(得分:0)

我没有很多使用django-rest-framework的经验,但看起来你需要create a serializer,它会自定义将对象转换为JSON,以便返回给用户以便关系被考虑在内。

将其放入manufacture_app/serializers.py

from rest_framework import serializers

class CarsSerializer(serializers.ModelSerializer):
    manufacturer_name = serializers.RelatedField(source='manufacturer') 

    class Meta:
        model = Cars
        fields = ('id', 'name', 'manufacturer_name')

并确保您的__unicode__函数返回正确的名称:

class Manufacturer(models.Models):
    ....

    def __unicode__(self):
        return self.name