我有一份Django的申请.和一种 foreign 关系.但API调用显示的是id,而不是名称.但我想显示的是姓名而不是身份证.

因此,这是一个属性:

category = models.ForeignKey(Category, related_name='animals', on_delete=models.CASCADE, verbose_name="test")    

和串行器:

class SubAnimalSerializer(serializers.ModelSerializer):
    class Meta:
        model = Animal
        fields = ['id', 'name', 'description',"category","pet_list", 'images' ]
        read_only_fields = ['id']

因此,这是API调用的一部分:

"animals": [
        {
            "id": 3,
            "name": "Vicuña",
            "description": "kjhkkhkhkjhjkhj Hello",
            "category": 6,
            "pet_list": "D",
            "images": "http://192.168.1.135:8000/media/media/photos/animals/mammal.jpg"
        },
        {
            "id": 5,
            "name": "Goudhamster",
            "description": "khkjh",
            "category": 6,
            "pet_list": "C",
            "images": "http://192.168.1.135:8000/media/media/photos/animals/imgbin_dog-grooming-puppy-cat-pet-png_I7rLPen.png"
        }
    ],

当然,我用谷歌搜索了一些东西.所以我发现了这个:

How to show name instad of id in django ForeignKey?

但它并不完全符合我要找的东西.

问:如何在API调用中显示名称而不是ID

推荐答案

您可以使用SlugRelatedField [drf-doc]:

class SubAnimalSerializer(serializers.ModelSerializer):
    category = serializers.SlugRelatedField(
        slug_field='name', queryset=Category.objects.all()
    )

    class Meta:
        model = Animal
        fields = ['id', 'name', 'description', 'category', 'pet_list', 'images']
        read_only_fields = ['id']

为了写入,Category中的name字段应该是唯一的,并且优选地具有db_index=True.

Python相关问答推荐

一切似乎都可以自己工作,但当我把它放在一起时,它会抛出RegexMatch错误

Python-Polars:如何用两个值的平均值填充NA?

两极:滚动组,起始指数由不同列设置

按日期和组增量计算总价值

键盘.任务组

单击Python中的复选框后抓取数据

使用argsorted索引子集索引数组

当值是一个integer时,在Python中使用JMESPath来验证字典中的值(例如:1)

如何终止带有队列的Python进程?+ 队列大小的错误?

symy.分段使用numpy数组

将HLS纳入媒体包

Locust请求中的Python和参数

替换字符串中的多个重叠子字符串

numba jitClass,记录类型为字符串

Pandas 有条件轮班操作

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

根据二元组列表在pandas中创建新列

如何使用表达式将字符串解压缩到Polars DataFrame中的多个列中?

从嵌套的yaml创建一个嵌套字符串,后面跟着点

启用/禁用shiny 的自动重新加载