0

我试图让我Product kind的名字与我声明的一样,而不是我得到的数字。让我更清楚一点:下面是我的Product Kinds

PRODUCT_KINDS = (
    ("1","Electronic"),
    ("2","Furniture"),
    ("3", "Bedroom"),
    ("4","Dining")

)

下面这张图片是我的 django-admin 面板,一切看起来都很完美,因为我可以得到我的每一种。 在此处输入 imasssge 描述

但是,当我尝试从api/productsurl 获取这些数据时,我得到了这些数据

[
    {
        "image": null,
        "name": "Headphones",
        "kind": "1",
        "price": 250.99,
        "description": "No description for this item.",
        "is_featured": true
    },
    {
        "image": null,
        "name": "Watch",
        "kind": "3",
        "price": 12.5,
        "description": "No description for this item.",
        "is_featured": true
    },
    {
        "image": null,
        "name": "T-shirt",
        "kind": "2",
        "price": 12.99,
        "description": "No description for this item.",
        "is_featured": true
    },
    {
        "image": null,
        "name": "Ali Ziya ÇEVİK",
        "kind": "1",
        "price": 1212.0,
        "description": "No description for this item.",
        "is_featured": false
    }
]

如您所见,在我的 django-admin 面板中,我得到了 kind 的名称,但在 API 中,我得到了它的索引。

下面是我的serializer

from rest_framework import serializers
from .models import Product


class ProductSerializer(serializers.ModelSerializer):
    #kind = serializers.CharField(source = 'kind')
    #print(kind)
    class Meta:

        model = Product
        fields = ['image', 'name', 'kind',
                  'price', 'description', 'is_featured']


4

2 回答 2

1

您可以从Model.get_FOO_display()方法中设置值的来源

kind = serializers.CharField(source = 'get_kind_display')
于 2020-12-08T06:03:56.073 回答
-1

您可以尝试使用 get_FOO_display 使用字段源: https ://docs.djangoproject.com/en/1.8/ref/models/instances/#django.db.models.Model.get_FOO_display

from rest_framework import serializers
from .models import Product


class ProductSerializer(serializers.ModelSerializer):

    kind = serializers.CharField(source='get_kind_display')
    class Meta(object):
        model = Product
        fields = ('image', 'name', 'kind','price', 'description', 'is_featured')
于 2020-12-08T07:01:23.907 回答