【问题标题】:Django-rest: show non-primary key fieldDjango-rest:显示非主键字段
【发布时间】:2026-01-29 18:15:02
【问题描述】:

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

制造商是汽车的外键:

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

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

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

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    我对@9​​87654322@ 没有太多经验,但您似乎需要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
    

    【讨论】:

    • 谢谢,我很难理解文档。你对学习 Django/Rest 有什么建议吗?这也是我第一次学习 Web 开发。
    • 为什么没有改变模型来描述这种关系?
    最近更新 更多